自定义按钮,可以更改文本颜色,背景颜色和点击可绘制

时间:2014-04-24 18:05:48

标签: android android-layout button

我在Button中有一个/drawable/ XML文件,用于更改按钮的状态

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

    <item android:drawable="@drawable/img_normal"
          android:state_focused="true" />

    <item android:drawable="@drawable/img_normal"/>
</selector>

如果我只在点击事件中更改背景,那就没关系。

但现在,我有一个左侧可绘制的按钮,点击后我必须更改左侧可绘制,文本颜色和按钮背景。

Button
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="My button"
   android:textColor="@android:color/white"
   android:drawableLeft="@drawable/btn_leftDrawable"
   android:background="@android:color/transparent"
/>

我可以在此XML中执行此操作吗?我不想通过在setOnClickListener方法中的Java代码中执行这些额外任务来制作意大利面条代码。

1 个答案:

答案 0 :(得分:2)

创建三个不同的xml选择器并将它们添加到相应的属性中。

样品:

<强> TEXTCOLOR:

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

<item android:color="@color/normal"/>

<强>背景

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

<item android:color="@android:color/transparent"/>

将它们添加到您的按钮:

Button
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="My button"
   android:textColor="@drawable/textColor"
   android:drawableLeft="@drawable/btn_leftDrawable"
   android:background="@drawable/background"
/>