我正在尝试实施类似Google音乐应用的卡片样式GridView
。
为此,我创建了以下选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:state_pressed="true"
android:drawable="@drawable/card_grid_bg_pressed">
</item>
<item
android:state_pressed="false"
android:drawable="@drawable/card_grid_bg_normal">
</item>
</selector>
第一个drawable是,第二个是。
它正在发挥作用,但问题在于我无法实现我想要的行为;因为当您按下Google音乐GridView
项目时,按下的选择器将与正常项目重叠。
以下是我想要的截图:
有什么想法吗?
答案 0 :(得分:1)
要做这样的事情,我使用了一个简单的drawable,并在我的视图中使用了setForeground
方法。
我使用的drawable是ActionBarSherlock库的一部分(我会让你找到它abs _list_focused_holo.9.png)。
因此,在我的自定义适配器中,我有一个名为setItemChecked(int position,int boolean,View v)的方法,该方法使用setForeground来更改视图v的ForeGround。
请注意,该视图是一个FrameLayout,因为据我所知这些或只有这种方法的视图。
public void setItemChecked(int position, boolean checked, View v) {
if(checked) {
if(v!=null)
((FrameLayout) v).setForeground(mContext.getResources().getDrawable(R.drawable.abs__list_focused_holo));
else
Log.w(LOGCAT_TAG, "v is null. Can't change foreground");
}
else {
if(v!=null)
((FrameLayout) v).setForeground(mContext.getResources().getDrawable(R.color.transparent));
else
Log.w(LOGCAT_TAG, "v is null. Can't change foreground");
}
}