【发布时间】:2011-11-29 07:27:58
【问题描述】:
我有画廊小部件,当你滚动它时,当前选择的图像有边框 - 只是简单的选择器,就像这样
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="true"
android:drawable="@drawable/thumbnail_frame" />
<item
android:drawable="@android:color/transparent" />
在画廊适配器的 getView 中它像这样附加
image.setBackgroundDrawable(getResources().getDrawable(R.drawable.xxx));
问题是,当我使用 setSelection() 更改画廊选择时,所选项目没有边框。但是,当我只是用手指在所选项目上滚动它时就可以了。我认为, setSelection() 不会触发 setSelected() 或类似的东西。
我想,解决方案是在 setSelection() 旁边调用 setSelected(),但是如何为当前选定的 ImageView 调用它?还是有其他方法可以做到这一点?
【问题讨论】:
-
您应该将背景静态分配给您的适配器视图(在布局中)。设置背景的代码可能为时已晚,无法“看到”所选状态。如果进入画廊的适配器视图不可聚焦,我也会遇到问题;您可能还想将状态添加到您的选择器中。您是否尝试过您的建议,是否有效?大家可以随时查看
Gallery.setSelection()的源码供参考! -
只是对代码的注释,image.setBackgroundResource(R.drawable.xxx) 比 image.setBackgroundDrawable(getResources().getDrawable(R.drawable.xxx)) 简单