我知道Picasso设置了“src”因此让“image.background”平静下来,但我似乎无法让ImageView响应选择器(就像触摸时显示标准的全息选择器或任何自定义一样)一)。
有人有工作样本吗?我肯定错过了什么。我尝试过不同的选择器,但我没有看到触摸状态。
我已尝试在onClick()中执行setselected(true)但我知道如果有一个类似于以下状态的drawable,View会自动处理这个:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:drawable="@android:color/transparent" />
<!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
<item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/abc_list_selector_disabled_holo_light" />
<item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/abc_list_selector_disabled_holo_light" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/abc_list_selector_background_transition_holo_light" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/abc_list_selector_background_transition_holo_light" />
<item android:state_focused="true" android:drawable="@drawable/abc_list_focused_holo" />
</selector>
加载图片的Java代码是:
Picasso.with(mContext).load(url).error(R.drawable.error).fit().into(holder.someIV);
someIV
的XML看起来像:
<ImageView
android:id="@+id/list_item_image"
android:layout_width="match_parent"
android:layout_height="@dimen/mixset_list_image_size"
android:layout_marginTop="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:contentDescription="@string/mixes"
android:scaleType="centerCrop"
android:background="@drawable/mix_list_art_selector"
android:cropToPadding="false" />
背景设置为上面的选择器。
有什么想法吗?感谢。
答案 0 :(得分:0)
这就是我的所作所为:
我想强调的是一个ImageView,它是list_item布局的一部分(技术上讲,一行)。
但我并不想突出显示整行,只是内部的图像。
我必须将ImageView包装在FrameLayout中。
<FrameLayout
android:id="@+id/list_item_image_wrapper"
android:layout_width="match_parent"
android:layout_height="@dimen/mixset_list_image_size"
android:clickable="true"
android:foreground="@drawable/mix_list_art_selector">
<ImageView
android:id="@+id/list_item_image"
android:layout_width="match_parent"
android:layout_height="@dimen/mixset_list_image_size"
android:layout_marginTop="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:contentDescription="@string/mixes"
android:scaleType="centerCrop"
android:clickable="false"
android:focusable="false"
android:cropToPadding="false" />
</FrameLayout>
...并将Click Listeners移动到FrameLayout。
感谢@jason_t指向解决方案的指针。
请注意,对于像TextView这样的其他小部件,可能不需要上面的内容。