我有一个按钮,当点击时,我希望文本的颜色从白色变为黄色。我在drawable文件夹中创建了一个选择器XML文件。我的问题是,当state_pressed为true时,我不知道如何设置文本的颜色。我尝试使用十六进制但仍然收到以下错误:
<item> tag requires a 'drawable' attribute or child tag defining a drawable
我认为颜色必须来自我的可绘制文件夹?我终于找到了这个解决方案,但仅限于我可以使用的颜色数量
<item
android:state_pressed="true"
android:drawable="@android:color/holo_blue_light">
</item>
我该如何解决这个问题?我可以在我的drawable文件夹中创建单独的XML文件,只有一种我可以参考的颜色吗?如果是这样,我该怎么做?还是有一个更简单的解决方案?谢谢。
答案 0 :(得分:3)
首先在你的app / resource / values中创建一个colors.xml资源文件,例如下面这个:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="gray">#D2D2D2</color>
<color name="dark_gray">#ff838383</color>
<color name="transparent_black">#1A000000</color>
</resources>
然后,您可以使用colors.xml中定义的颜色来创建选择器。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="false" android:color="@color/gray" />
<item android:state_focused="true" android:state_pressed="true" android:color="@color/dark_gray" />
<item android:state_focused="false" android:state_pressed="true" android:color="@color/dark_gray" />
<item android:color="@color/transparent_black" />
</selector>
将xml放在res / drawable文件夹中的文件中,即res / drawable / button_text_color.xml。然后只需将drawable设置为按钮中的文本颜色:
android:textColor="@drawable/button_text_color"
答案 1 :(得分:2)
bg_color_white.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/white" />
</shape>
答案 2 :(得分:1)
创建一个XML文件&#34; myCustomDrawable&#34;在您的Drawable文件夹中,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<solid android:color="@color/lightPurple"/>
</shape>
</item>
<item>
<shape>
<solid android:color="@color/white"/>
</shape>
</item>
</selector>
&#13;
在哪里&#34; deepPurple&#34;和&#34; lightPurple&#34;在... values / colors.xml中定义为:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name = "deepPurple">#673AB7</color>
<color name = "lightPurple">#D1C4E9</color>
</resources>
&#13;
然后只需将Drawable文件分配到活动布局中的按钮:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
...
android:textColor="@drawable/myCustomDrawable"
...
.../>
&#13;
答案 3 :(得分:0)
下面是一个所谓的drawable选择器示例。
将它放在/ drawable文件夹下。
你看到android:state_pressed =“true”这就是定义按下按钮时会发生什么的内容。这是您设置为黄色的颜色。
state_focused =“true”是指手指按下按钮但不放手,因此它具有焦点。您可能希望在此处将颜色更改为黄色。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" >
<shape android:shape="rectangle" >
<corners android:radius="3dip" />
<stroke android:width="1dip" android:color="#39678c" />
<gradient android:angle="-90" android:startColor="#39678c" android:endColor="#39678c" />
<size android:width="75dp" android:height="25dp"/>
</shape>
</item>
<item android:state_focused="true">
<shape android:shape="rectangle" >
<corners android:radius="8dip" />
<stroke android:width="1dip" android:color="#696969" />
<solid android:color="#696969"/>
<size android:width="75dp" android:height="25dp"/>
</shape>
</item>
<item >
<shape android:shape="rectangle" >
<corners android:radius="8dip" />
<stroke android:width="1dip" android:color="#39678c" />
<gradient android:angle="-90" android:startColor="#39678c" android:endColor="#39678c" />
<size android:width="75dp" android:height="10dp"/>
</shape>
</item>
</selector>
答案 4 :(得分:0)
我仍然遇到同样的错误,但回复让我弄清楚了。问题是我的选择器中的语法:
<item
android:state_pressed="true"
android:drawable="@android:color/holo_blue_light"> </item>
颜色HAD的语法以android:drawable =开头,否则我一遍又一遍地得到同样的错误。例如,如果我使用:
android:color="@color/gray"
或
<solid android:color="@color/gray" />
它一直产生这个错误:
<item> tag requires a 'drawable' attribute or child tag defining a drawable
所以,就像它的建议一样,我在我的values文件夹中创建了一个名为colors的XML文件,并创建了一个我想要使用的颜色:
<resources>
<color name = "light_blue">#33b5e5</color>
</resources>
然后我可以在我的选择器文件中使用它,如下所示:
android:drawable="@color/light_blue""