8

ドローアブルとテキストを含むボタンがあります。ボタンの背景を通常のボタンの背景とは異なるものにしたい(できれば無地)。これは問題なく機能しandroid:backgroundます。XMLファイルの属性を使用し、それに応じて色を割り当てます。ただし、選択またはフォーカスしたときに背景を別の色に変更したい(状態セレクター)。

次のように、定義された色(ボタンのテキストを操作するときにうまく機能します)を使用して、描画可能なフォルダーにセレクターを作成しようとしました。

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_focused="true" android:state_pressed="false" android:color="@color/green" />
        <item android:state_focused="true" android:state_pressed="true" android:color="@color/green" />
        <item android:state_focused="false" android:state_pressed="true" android:color="@color/green" />
        <item android:color="@color/white" />
    </selector> 

次のように、このxmlをandroid:background属性として設定します。

android:background="@drawable/button_state"

しかし、これにより、次のように強制的に閉じます。

 Caused by: android.content.res.Resources$NotFoundException: File res/drawable/button_state.xml from drawable resource ID #0x7f020070

しかし、リソースはそこにあります。背景の状態をカスタマイズできませんか?できれば、どうやって?または私は何が間違っているのですか?助けてくれてありがとう!

4

2 に答える 2

11

投稿したxmlは、状態リストのドローアブルではなく、色の状態リストに適しています。代わりにこれを試してください:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:state_pressed="false" >
        <shape><solid android:color="@color/green"/></shape>
    </item>
    . . .
</selector>

または、既存のファイルを に入れて、res/color他の色と同じように使用します。ただし、色の状態のリストをビューの背景として直接使用できるかどうかは覚えていません。

于 2012-12-31T19:04:49.233 に答える
2

例:

XML file saved at res/color/button_text.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true"
              android:color="#ffff0000"/> <!-- pressed -->
        <item android:state_focused="true"
              android:color="#ff0000ff"/> <!-- focused -->
        <item android:color="#ff000000"/> <!-- default -->
    </selector>
    This layout XML will apply the color list to a View:

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/button_text"
        android:textColor="@color/button_text" />

@color/button_text

res/color/button_text.xml

これは、ColorStateList リソースで Google が提供する例です: https://developer.android.com/guide/topics/resources/color-list-resource.html

ウィジェットの textView の色を変更するには colorStateList を使用する必要があると思います。

于 2015-02-27T13:44:41.183 に答える