android - 根据焦点更改android编辑框中的文本颜色

标签 android android-layout

我正在使用下面的 xml 文件来更改编辑框的颜色。但我想知道如何根据焦点更改编辑框中的文本颜色。如果编辑框聚焦,我喜欢将文本颜色更改为黑色,当它没有聚焦时,我想将颜色更改为白色。

我如何在 xml 文件中实现它?任何帮助对我学习 android drawable 资源都非常有用。

 <?xml version="1.0" encoding="UTF-8"?>
 <selector
     xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true">
    <shape>
        <gradient
            android:endColor="#FFFFFF"
            android:startColor="#FFFFFF"
            android:angle="90" />
        <stroke
            android:width="3dp"
            android:color="#0f0f0f" />
        <corners
            android:radius="10dp" />
    </shape>
</item>

<item android:state_focused="false">        
    <shape>
        <gradient
            android:endColor="#000000"
            android:startColor="#000000"
            android:angle="90" />
        <stroke
            android:width="3dp"
            android:color="#151515" />
        <corners
            android:radius="10dp" />
    </shape>
</item>

最佳答案

你应该使用ColorStateList而不是状态列表。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#ffff0000" /> <!-- pressed -->
<item android:state_focused="true" android:color="#ff0000ff" /> <!-- focused -->
<item android:color="#ff000000" /> <!-- default -->

然后只需将此状态列表分配给 textColor 属性即可。

关于android - 根据焦点更改android编辑框中的文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6247965/

相关文章:

java - 多值测试,如何替换许多else if语句?

java - 如何获取 OnClickListener 的正确上下文?

Android:是否可以在绘制之前计算 View 的高度?

安卓 TableLayout : Trying to make entried in 1 row larger than another

java - ArrayList IndexOfBound从firestore数据库获取数据时出现异常,为什么?

android - 防止整个应用程序 android 的旋转

android - Firebase Crashlytics 在没有 Fabric API key 的情况下无法工作

android - 为 View 组中的一组 child 设置动画

xml - 如何将一对unicode字符放入string.xml文件android studio中?

Android Studio 预览渲染