-4

我在 xml 中有一些带有文本和可绘制集的按钮android:drawableLeft=...

我想知道如何在点击时更改文本和可绘制对象的颜色。而且它必须是通用的,因为我每次都有很多按钮,不同的drawable。

我的 XML:

<LinearLayout
    android:id="@+id/linearLayout2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/btn_articles"
        style="@style/Main_button"
        android:layout_marginLeft="5dp"
        android:background="@color/green3"
        android:onClick="myClickHandler"
        android:text="Articles"
        android:drawableLeft="@drawable/ic_article"
        android:textColor="@drawable/btn_default" />

    <Button
        android:id="@+id/btn_encaiss"
        style="@style/Main_button"
        android:layout_marginLeft="5dp"
        android:background="@color/green4"
        android:onClick="myClickHandler"
        android:text="Encaissement"
        android:drawableLeft="@drawable/ic_encaiss"
        android:textColor="@drawable/btn_default" />

    <Button
        android:id="@+id/btn_stats"
        style="@style/Main_button"
        android:layout_marginLeft="5dp"
        android:background="@color/green1"
        android:onClick="myClickHandler"
        android:text="Statistiques"
        android:drawableLeft="@drawable/ic_stats"
        android:textColor="@drawable/btn_default" />

    <Button
        android:id="@+id/btn_clients"
        style="@style/Main_button"
        android:layout_marginLeft="5dp"
        android:background="@color/green2"
        android:onClick="myClickHandler"
        android:text="Clients"
        android:drawableLeft="@drawable/ic_clients"
        android:textColor="@drawable/btn_default" />
</LinearLayout>

现在我只是在点击时更改文本颜色。我想在不知道左侧可绘制名称的情况下同时更改可绘制和文本颜色。

4

1 回答 1

0
Drawable img = getContext().getResources().getDrawable( R.drawable.smiley );
img.setBounds( 0, 0, 60, 60 );
txtVw.setCompoundDrawables( img, null, null, null );

使用此代码,您可以以编程方式更改左侧可绘制对象。

文字颜色请参考安卓文档

于 2013-07-26T08:38:06.030 回答