2016-10-12 7 views
1

Я установил переднего плана в мое изображение, чтобы выбрать, когда он был выбран. Это отлично работает в версии Android версии 6. При выборе ничего не меняется в минимальных версиях. Пожалуйста, помогите мне.Задайте переднего плана для изображения.

<ImageView 
     android:id="@+id/style_list_item_image_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:adjustViewBounds="true" 
     android:foreground="@drawable/style_item_selector" 
     android:scaleType="center" 
     android:drawSelectorOnTop="true" 
     android:clipChildren="true" 
     android:clipToPadding="true"/> 

style_item_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true"> 
     <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
      <size android:width="60dp" android:height="80dp" /> 
      <stroke android:width="1dp" android:color="#ff3591" /> 
      <solid android:color="@color/transparent100" /> 
      <corners android:radius="1dp" /> 
     </shape> 
    </item> 
</selector> 

ответ

2

У меня есть решение для вас

Selector будет как этого

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true"> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
     <size android:width="60dp" android:height="80dp" /> 
     <stroke android:width="1dp" android:color="#ff3591" /> 
     <solid android:color="@android:color/transparent" /> 
     <corners android:radius="1dp" /> 
    </shape> 
</item> 

ImageView нужно завернуть

<FrameLayout 
    android:id="@+id/share" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:foreground="@drawable/style_item_selector"> 


    <ImageView 
    android:id="@+id/style_list_item_image_view" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:adjustViewBounds="true" 
    android:scaleType="center" 
    android:drawSelectorOnTop="true" 
    android:clipChildren="true" 
    android:clipToPadding="true"/> 
</FrameLayout> 

Надеюсь, это сработает для вас!

Убедитесь, что вы приложите onClickListener к FrameLayout

+0

Спасибо. Это поможет мне. – Butterfly

+0

@ Meline Enjoy ... !!! –

-4

Добавьте этот код в build.gradle file и перестраивать

compile 'com.android.support:multidex:1.0.0' 

Я надеюсь, что это поможет. GL :)
Найден от this problem

1
 case R.styleable.View_foreground: 
      if (targetSdkVersion >= Build.VERSION_CODES.M || this instanceof FrameLayout) { 
       setForeground(a.getDrawable(attr)); 
      } 
      break; 

Это код внутри инициализации View.java. передний план работает только для API-23 + и для FrameLayout