14

で困っていView.setSelected()ます。Views選択済みとしてフラグが付けられています-TextViewsたとえば、フォントの色を変更します-しかし、私の背景セレクターは変更を登録していないようです。

セレクターの例:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/transparent" />

    <item android:state_selected="true">
        <shape android:shape="rectangle">
            <solid android:color="#ff8600" />
        </shape>
    </item>
</selector>

どの種類のコンテキスト情報が役立つかさえわかりません。ビューは LinearLayout の子であり、タッチ イベント内で選択された状態をプログラムで設定しています。私が言ったように、フォントの色が白から灰色に変わるので、うまくいくように見えますが、背景は同じままです.

編集:投稿する前にばかげた間違いをチェックしました:P. 答えは「android:background 属性を追加する」ではありません。

4

3 に答える 3

34

セレクター xml では項目の順序が重要です。既定の項目は常に項目リストの一番下にある必要があります。

于 2011-09-30T15:05:57.107 に答える
8

選択した状態の順序だけでなく、すべての状態の順序も重要です。私の場合、state_pressed最初に追加しましたが、機能しstate_selectedません。だから私はこのように順序を変更しました、そしてそれはうまくいきました:

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
  <item 
    android:state_selected="false"
    android:drawable="@drawable/chooser_normal"></item>
<item 
    android:state_selected="true"
    android:drawable="@drawable/chooser_pressed"></item>
<item 
    android:state_pressed="true"
    android:drawable="@drawable/chooser_pressed"></item>
<item 
    android:state_pressed="false"
    android:drawable="@drawable/chooser_normal"></item>
 </selector>

編集

ボタンを押すと、選択された状態になりますが、押された状態にはなりません。したがって、解決策は、このように状態を追加するために、デフォルトのボタンの外観を追加することをお勧めします。



最初に選択状態を設定し、その後、押された状態と同じ状態を交互に設定します。(今のところ、stackoverflow は私の編集内容を完全には表示していません。理由はわかりません。しばらくお待ちください)。

于 2012-09-30T17:19:54.613 に答える
0

理由は明らかではありませんが、これでうまくいくと思います (state_selected="false" が追加されていることに注意してください)。

<item android:state_selected="false" android:drawable="@android:color/transparent" />

<item android:state_selected="true">
    <shape android:shape="rectangle">
        <solid android:color="#ff8600" />
    </shape>
</item>

お役に立てば幸いです。

于 2011-09-30T14:37:00.393 に答える