按下时更改按钮文本颜色

ski*_*t51 13 android android-button

我已经使我的按钮透明,所以当按下按钮时我希望按钮文本颜色改变.是否可以仅使用xml文件执行此操作?

dam*_*son 38

是的,你可以这样做:

布局/ main_layout.xml:

.....
    <Button
      android:id="@+id/button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="bonjour !"
      android:textColor="@color/button_text_color"
    />
.....
Run Code Online (Sandbox Code Playgroud)

颜色/ button_text_color.xml:

   <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:color="#c0c0c0" android:state_pressed="true"/>
     <item android:color="#ffffff"/>
   </selector>
Run Code Online (Sandbox Code Playgroud)

  • 你究竟在哪里改变文字颜色?你在玩背景,但不是文字颜色 (2认同)
  • 不是`@ drawable/button_text_color`,而是`@ color/button_text_color`. (2认同)

Squ*_*onk 11

请参阅此文档中的" 状态列表 "一节... 可绘制资源.

您可以Button为透明的"默认"状态定义两个不同的xml文件,为"紧急"状态定义另一个按钮为红色的文件.然后定义一个selector切换不同状态的可绘制资源.

编辑:根据devunwired的评论,颜色状态列表资源可能更适合仅改变颜色而不是drawable本身.

  • +1因为这个答案大多是正确的.我想补充一点,你可以使用颜色状态列表以类似于可绘制背景的方式更改`android:textColor`属性:http://developer.android.com/guide/topics/resources/color-list -resource.html (7认同)

小智 5

我喜欢Konstantin Burov在另一期中提出的解决方案:Android自定义按钮;更改文字颜色

实际上,您不仅可以管理正常状态,还可以管理更多状态。但是它应该解决问题。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Focused and not pressed -->
<item android:state_focused="true" 
      android:state_pressed="false" 
      android:color="#ffffff" />

<!-- Focused and pressed -->
<item android:state_focused="true" 
      android:state_pressed="true" 
      android:color="#000000" />

<!-- Unfocused and pressed -->
<item android:state_focused="false" 
      android:state_pressed="true" 
      android:color="#000000" />

<!-- Default color -->
<item android:color="#ffffff" />
</selector>
Run Code Online (Sandbox Code Playgroud)

然后,您可以在按钮中使用该选择器drawable来更改文本颜色属性,如下所示。请注意,以下示例中的选择器名为“ button_text_color”

android:textColor =“ @ drawable / button_text_color”

使用相同的可绘制方法,您还可以解决按钮的背景色。只需记住,在选择器中而不是使用“ android:color”属性,您需要使用“ android:drawable”属性,如下所示。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Focused and not pressed -->
<item android:state_focused="true" 
      android:state_pressed="false" 
      android:drawable="#ffffff" />

<!-- Focused and pressed -->
<item android:state_focused="true" 
      android:state_pressed="true" 
      android:drawable="#000000" />

<!-- Unfocused and pressed -->
<item android:state_focused="false" 
      android:state_pressed="true" 
      android:drawable="#000000" />

<!-- Default color -->
<item android:drawable="#ffffff" />
</selector>
Run Code Online (Sandbox Code Playgroud)

然后在按钮本身中,请注意,这次选择器名称为“ button_background”

android:background =“ @ drawable / button_background”