5

我有一个 android 应用程序,它有一个按钮,当它被禁用时,我希望它具有黑色文本和背景,然后在启用它时具有白色书写的绿色背景。

我已经启用和禁用工作,但是如果我更改颜色,无论其状态如何,按钮都会保持不变。

我读过我需要使用自定义选择器来手动设置颜色,这就是我到目前为止所得到的:

res/drawable 中的 continuebutton.xml:(绿色在 /res/values/colors.xml 中声明)

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item 
android:state_enabled="false"
    android.textColor ="@android:color/black"
    android:drawable="@android:color/black" />
<item 
    android:state_enabled="true"
    android.textColor ="@android:color/white"
    android:drawable="@color/green" />

布局 xml 文件中的 continuebutton:

 android:id="@+id/continueButton"
   android:layout_width="200dp"
    android:layout_height="55dp"  android:layout_gravity="center" android:paddingTop="10dp" android:textSize="18dp" 
    android:text="@string/continueButton" android:background="@drawable/continuebutton" />

我认为我在 continuebutton.xml 文件中做错了,但我不确定如何修复它。

任何帮助将不胜感激!

谢谢

更新:

我有背景改变颜色,最后一个问题是解决是无论按钮是禁用还是启用,文本颜色都保持黑色(启用时应该是白色)。

我需要在 res/drawable 中为文本颜色创建一个新的 xml 文件吗?

有任何想法吗?

4

2 回答 2

1

移除属性

android:src="@drawable/continuebutton"

并使用

android:background="@drawable/continuebutton"

在运行时,您可以通过

myButton.setBackgroundDrawable(getApplicationContext().getResources().getDrawable(R.drawable.myfirstbg));
myButton.setBackgroundDrawable(getApplicationContext().getResources().getDrawable(R.drawable.mysecondbg));

如果你想使用背景颜色删除这两个属性`

android:src="@drawable/continuebutton"
android:background="@drawable/continuebutton"

并使用此更改背景颜色

myButton.setBackgroundColor(Color.BLUE);
myButton.setBackgroundColor(Color.GREEN);
于 2012-04-06T12:05:55.057 回答
1

您必须将文件添加到文件res/color夹中。

您有一些可用的“状态”值。对于启用/禁用,请参阅android:state_enabled

mybutton_color.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="#fff"/> <!-- pressed -->
    <item android:state_focused="true" android:color="#fff"/> <!-- focused -->
    <item android:state_enabled="false" android:color="#000"/> <!-- disabled -->
    <item android:color="#fff"/> <!-- default -->
</selector>

在您看来使用android:textColor

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

正如这里提到的:https ://developer.android.com/guide/topics/resources/color-list-resource

于 2020-12-11T10:17:59.817 回答