2016-04-19 76 views
0

我使用連鎖反應

android:background="?android:attr/selectableItemBackground" 

當recyclerview的項目被感動添加連鎖反應。 當長按列表項目時,我會顯示一個操作欄。但是該項目不再突出顯示。我曾經有一個選擇

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_selected="true"> 
    <shape> 
     <solid android:color="@color/selector"/> 
    </shape> 
</item> 

<item android:state_pressed="true"> 
    <shape> 
     <solid android:color="@color/selector"/> 
    </shape> 
</item> 

<item> 
    <shape> 
     <solid android:color="@android:color/transparent"/> 
    </shape> 
</item> 
</selector> 

如以高亮顯示所選項目的背景,但因爲我想有波紋的動畫我已經爲selectableItemBackground東西。 這裏有一些帖子顯示如何編寫保存在具有21個文件擴展名的文件夾中的漣漪文件。但是,紋波標記僅適用於API Level 21及更高版本。由於我希望擁有比21級或更高級別更高的設備覆蓋範圍,所以我在徘徊是否有另一個將我的選擇器與紋波組合在一起。

謝謝

回答

0

我發現了一個很好的技巧來解決我的問題,使用FrameLayout。

的佈局recyclerview項如下所示:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:background="@drawable/selector" 
    android:orientation="vertical"> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:layout_width="match_parent" 
        android:layout_height="0dp" 
        android:layout_marginLeft="@dimen/activity_horizontal_margin" 
        android:layout_weight="1" 
        android:gravity="center_vertical" 
        android:orientation="vertical"> 

     <TextView 
      android:id="@+id/name" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:ellipsize="marquee" 
      android:singleLine="true" 
      android:textColor="@color/modelTitelColor" 
      android:textStyle="bold"/> 

     <TextView 
      android:id="@+id/objects" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:ellipsize="marquee" 
      android:singleLine="true" 
      android:textColor="@color/cardview_background" 
      android:textStyle="normal"/> 
    </LinearLayout> 


    <View 
     android:layout_width="match_parent" 
     android:layout_height="1dp" 
     android:background="?android:attr/listDivider"/> 
</LinearLayout> 

<View 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="?android:attr/selectableItemBackground"/> 
</FrameLayout> 

訣竅是到選擇器設置爲內的LinearLayout的背景,並使用著名selectedItemBackground爲的FrameLayout內的圖。