web-dev-qa-db-ja.com

Android:クリック時にフォントの色を変更する

ボタン内のテキストの色を変更しようとしています。

たとえば、白で塗りつぶされたボタンがあり、テキストは青です。ボタンをクリックすると、これら2つの色を入れ替えたいと思います(ボタン内のテキストは白になり、ボタンは青になります)。

私はこのようなことを試しました:

 <item style="@style/ButtonText_Menue_Clicked" Android:drawable="@drawable/button_menue_default" Android:state_focused="true"></item>
 <item style="@style/ButtonText_Menue" Android:drawable="@drawable/button_menue_default" ></item>

しかし、実際には何もしません。私がやりたいことをする方法はありますか、またはonclikイベントでいくつかのことをしなければなりません(しかし、「クリックがなくなった」ときに色を元に戻す方法に問題があります)

13
user3466562

以下のように、テキストの色をres/colorselectorリソースを作成し、res/drawableにボタンselectorを作成します。

text_color.xml

<selector
    xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item
        Android:state_pressed="true"
        Android:color="#800000" />
    <item
        Android:state_pressed="false"
        Android:color="#4C5" />
</selector>

button_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item
        Android:state_pressed="true">
        <shape Android:shape="rectangle">
            <solid Android:color="#4C5"/>
        </shape>
    </item>
    <item
        Android:state_pressed="false">
        <shape Android:shape="rectangle"  >
            <solid Android:color="#800000"/>
        </shape>
    </item>
</selector>

ボタンをレイアウトに追加します

 <Button
    Android:id="@+id/button1"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="Button"
    Android:textColor="@color/text_color"
    Android:background="@drawable/button_color"/>
58
Libin