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 に答える