我使用 GalleryView 来显示带有 BaseAdapter 的字符串
根据项目状态(选择器)更改背景和文本颜色没有问题
但我只想在单击项目时更改背景和文本颜色,而不仅仅是选择,GalleryView 项目状态随您四处乱跳时调用的所选事件而变化(自动选择居中的项目)
总之,如果未单击该项目,则背景不能改变
我该怎么办?
问问题
1197 次
2 回答
2
您必须捕获选定的事件并将视图的背景更改为未选定。存储上次单击的位置以避免更改其选定的背景。此外,当单击另一个项目而不扔时,存储上次单击的视图以恢复未选择的背景:
gallery = (Gallery) findViewById(R.id.gallery);
gallery.setAdapter(new DaysGalleryAdapter(this, new int[]{R.layout.gallery_item}, new int[]{R.id.tv_gallery}));
gallery.setOnItemClickListener(mOnGalleryClick);
gallery.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if(position != savedClickedPosition)
view.setBackgroundResource(R.drawable.bg_unselected);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
private OnItemClickListener mOnGalleryClick = new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
lastItemSelected.setBackgroundResource(R.drawable.tab_bg_unselected);
view.setBackgroundResource(R.drawable.tab_bg_selected);
lastItemSelected = view;
savedClickedPosition = position;
// Do stuff
}
};
如果对您来说为时已晚,Fluckysan 至少希望它对遇到同样问题的人有所帮助。快乐编码!
于 2011-08-17T11:30:29.683 回答
0
您必须使用该属性在您的 xml 中实现一个列表选择器,android:listSelector
然后将此样式设置为您的列表视图。
于 2011-08-17T12:20:30.127 回答