仅在单击时更改项目状态可绘制 - GalleryView

时间:2011-07-12 15:28:40

标签: android android-widget galleryview


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

但是我想更改背景和文本颜色只有在单击项目而不仅仅是选中时,GalleryView项目状态会随着所选事件的变化而变化(当你自动选中居中项目时) /> 如果没有点击该项目,则必须在2个单词中更改背景 我该怎么做呢?

2 个答案:

答案 0 :(得分: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至少希望对有同样问题的人有所帮助。 快乐的编码!

答案 1 :(得分:0)

您必须使用属性android:listSelector在xml中实现列表选择器,然后将此样式设置为列表视图。