0


我使用 GalleryView 来显示带有 BaseAdapter 的字符串
根据项目状态(选择器)更改背景和文本颜色没有问题

但我只想在单击项目时更改背景和文本颜色,而不仅仅是选择,GalleryView 项目状态随您四处乱跳时调用的所选事件而变化(自动选择居中的项目)

总之,如果未单击该项目,则背景不能改变
我该怎么办?

4

2 回答 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 回答