2013-04-04 8 views
8

公式のAndroidサイトのtutorial on creating contextual action menusに従った。下のコードを使用して、ListView項目の1つを長押しすると、になりますが、選択されたことは視覚的に示されません。 Holo Lightテーマを使用しています。リストビュー内の選択したすべてのアイテムの背景色が青の色合いに変わることが予想されます。コンテキストアクションモードで選択すると、リストビューアイテムが視覚的に「強調表示」されない

これは正常な動作ですか?

私はlistView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);のテストを試みましたが、1行でも強調表示されません。

を使用すると、最後に選択された行が強調表示されるように見えますが、選択されている他の行は強調表示されません。

私は何か間違ったことをしましたか、または手動で背景を変更する必要がありますか?もしそうなら、どうですか?

私はまたlistView.setSelector(android.R.drawable.list_selector_background);を試しましたが、それは異なる状態の項目を含む実際のセレクタです。残念ながら、それは最も最近選択されたListView項目にのみ適用されます。

public class MyActivity extends ListActivity { 

    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     // The list is generated here 

     ListView listView = getListView(); 
     listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 

     listView.setMultiChoiceModeListener(new MultiChoiceModeListener() { 
      // implements empty methods 
     } 
    } 
} 

ありがとうございます!

+0

を示唆するように、あなたが他の場所で事前に定義されたリソースを使用するか、少し長い方法を取るとセレクタを定義することができます理解のuは、すべてのコンテキストのアクションビューに入るために管理したのですか?私は運がないと同じことをやろうとしています。 Jelly Beanの目覚まし時計ListViewエフェクトと同じ効果を得ようとしましたが、これはアイテムを長押しすると削除モードになります。 –

答えて

2

私の意見では、説明する方法は可能であるはずですが、残念ながらそれはありません。

私が今までに見つけたのは、項目の「状態」が「アクティブ化」されているときに、背景がどのように見えるかを記述するXMLリソースを使用する必要があることです。

'res/drawable /'ディレクトリに 'list_item_background_activated.xml'というファイルを作成します。それに

あなたはタイプセレクタのルート要素を定義します。

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
<item 
    android:state_activated="true" 
    android:drawable="@android:color/darker_gray" /> 

</selector> 

今、あなたはこの描画可能を参照するために、関連するリソース(あなたはリストアイテムがどのように見えるかを定義したリソース)を変更する必要があります

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/list_item_background_activated" > 
    ... 
</RelativeLayout> 
1

私はちょうどコンテキストアクションモードを実装していましたが、持っていたのと同じ問題がありました。私はあまりにも、デフォルトの振る舞いは、それぞれの選択された行が何らかの形で強調表示されることになると考えました。

私が希望する効果を得る最も簡単な方法は、私がListActivityに使用していたリストアイテムリソースを変更することでした。

私のための選択は、アダプタのコンストラクタで作られているので、私はArrayAdapterを使用してい

new ArrayAdapter<Exercise>(context, android.R.layout.simple_list_item_1); 

最後のパラメータは、アダプタが新しいビューをinstanciatingに使用するレイアウトファイルのリソースIDです(リスト項目)をリストビューに表示します。

私は最も基本的なものと思ったものを選んでいました。

new ArrayAdapter<Exercise>(context, android.R.layout.simple_list_item_activated_1); 

希望する効果が得られました。コンテキストアクションモードで選択した行がハイライトされたままになりました。

android.R.layoutには他にもいくつかのリソースIDが定義されていますが、同様の結果が得られるように選択することができます。http://developer.android.com/reference/android/R.layout.html、simple_list_item_activated_1がそれを実行しました。

ない

// The list is generated here 

アダプタそうであれば、配列のアダプターを隠しますが、それがない場合、これが役立つかどうかを確認してください。

は、そうでなければ、私はBrabbeldasが

関連する問題