RecyclerView项目可绘制状态不起作用

时间:2015-10-27 17:40:36

标签: android android-recyclerview android-drawable

我正在使用Recyclerview。它有一个GridLayoutManager,并使用Glide / Picasso库包含/显示图像网格。我在recyclerview中的项目具有以下布局。

<?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/item_recycler_view"
android:clickable="true"
android:focusable="true"
android:foreground="@drawable/item_recycler_view">

<ImageView
    android:id="@+id/savedPhoto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:scaleType="centerCrop"
    android:transitionName="imageScale" />

我已将以下状态drawable(item_recycler_view)设置为父FrameLayout。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/holo_red_dark" android:state_selected="true" />
<item android:drawable="@android:color/holo_red_dark" android:state_pressed="true" />
<item android:drawable="@android:color/transparent" />

在按下Recyclerview中的项目时,我没有进行状态更改。

如何在继续使用Picasso / Glide的同时为RecyclerView项目的不同状态设置不同的drawable?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我用这种方式解决了android:state_focused="true"属性:

item_recycler_view

中的

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?attr/colorControlHighlight">
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item
                android:drawable="@color/colorAccent"
                android:state_focused="true" />
        </selector>
    </item>
</ripple>