我在我的Android应用程序中使用TextView
作为Button
(平面UI)。以下是代码
<TextView
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:background="@drawable/button_background"
android:enabled="false"
android:gravity="center"
android:paddingBottom="16dp"
android:paddingTop="16dp"
android:text="Sign Up"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold" />
背景drawable'button_background'是
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#FCD5A5" android:state_enabled="false" />
<item android:drawable="#F7941E" />
因此当Button
启用时,它应该具有深橙色背景,否则会显示浅橙色背景。
背景色适用于两种状态(启用和禁用)但文本颜色也会发生变化。它在启用状态下保持白色,但在禁用状态下更改为深灰色。我想在两个州保持白色。
答案 0 :(得分:0)
我目前正在研究如何为您的选择器执行此操作。但是现在,您可以随时执行此操作并调用一次进行初始化,然后再进行状态更改:
private void updateTextColor(TextView view, Context context) {
if (!view.isEnabled()) {
view.setTextColor(context.getResources().getColor(android.R.color.white));
}
}
答案 1 :(得分:0)
textcolorselector.xml&lt; =将此文件放入drawable
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/general_blue" android:state_enabled="true"></item>
<item android:color="@color/general_gray" android:state_enabled="false"></item>
<item android:color="@color/general_blue"></item>
将此行添加到color.xml文件
<drawable name="textviewcolor">@drawable/textcolorselector</drawable>
并最终将其应用于您的布局
<TextView
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:background="@drawable/button_background"
android:enabled="false"
android:gravity="center"
android:paddingBottom="16dp"
android:paddingTop="16dp"
android:text="Sign Up"
android:textColor="@color/textviewcolor" // <== i made change here!
android:textSize="16sp"
android:textStyle="bold" />