我想在按下时更改StaggeredGridView项目的背景颜色,但是目前我默认获得一个丑陋的姜饼橙色,如图所示 here。我尝试将gridview项目背景设置为选择器,但是当我这样做时,如果我单击一个项目,则所有项目都是'背景颜色改变了。
<!-- My selector -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/holo_blue_light"
android:state_pressed="true" />
<item android:drawable="@android:color/transparent" />
</selector>
这是在我的StaggeredGridView中,但它没有帮助:
<!-- In StaggeredGridView -->
android:listSelector="@drawable/selector"
顺便说一句,我正在使用this StaggeredGridView库。提前谢谢!
答案 0 :(得分:3)
执行staggeredGridViews onClick事件:
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
for(int i=0;i<mGridView.getChildCount();i++) {
mGridView.getChildAt(i).setBackgroundColor(getResources().getColor(R.color.yellow));
// set all items to yellow
}
mGridView.getChildAt(position).setBackgroundColor(getResources().getColor(R.color.blue));
//set the selected items color to blue
}
希望这会有所帮助
答案 1 :(得分:1)
解决方案是远离任何引用的@color或@drawable 到listSelector里面的颜色。我创建了两个3x3像素.png文件。 每个都保存有伽玛层。就我而言,它是两种相同的颜色 每个都在Gimp中混合,颜色的透明度不同 层。因此,当您选择一个项目时,您会得到一个25%颜色的叠加层, 当你按下它时,你得到一个50%颜色的png。我把它们放在我的 drawables as bg_list_item_pressed.png和bg_list_item_highlighted.png
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Selected -->
<item
android:state_focused="true"
android:state_pressed="false"
android:drawable="@drawable/bg_list_item_highlighted" /> <!-- @drawable/tab_focus -->
<!-- Pressed -->
<item
android:state_pressed="true"
android:drawable="@drawable/bg_list_item_pressed" /> <!-- @drawable/tab_press -->
</selector>
然后
android:listSelector="@drawable/list_selector"
android:drawSelectorOnTop="true"
答案 2 :(得分:1)
您应该更改该库中的一行而不是创建自己的选择器
1)在库中有一个名为StaggeredGridView
该类中有一个名为useDefaultSelector()
在注释setSelector行并添加以下行:
setSelector(getResources().getDrawable(R.drawable.selector));
2)在库中的drawable文件夹中创建一个xml文件,如下所示:selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:drawable="@color/transparent" />
<item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@color/transparent" />
<item android:state_focused="true" android:state_enabled="false" android:drawable="@color/transparent" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@color/yourColor1" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@color/yourColor2" />
<item android:state_focused="true" android:drawable="@color/yourColor3" />
</selector>