Dan*_*iel 37 android android-layout android-xml
我想使用selector-xml文件更改按钮的背景颜色.我的方法基本上是本页底部示例中的方法:http://developer.android.com/guide/topics/resources/color-list-resource.html
我有一个res/color/button_text.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="#ffff0000"/> <!-- pressed -->
<item android:state_focused="true"
android:color="#ff0000ff"/> <!-- focused -->
<item android:color="#ff000000"/> <!-- default -->
</selector>
Run Code Online (Sandbox Code Playgroud)
我的布局包含以下代码:
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_text"
**android:background="@color/button_text"** />
Run Code Online (Sandbox Code Playgroud)
(**只是告诉你我使用android:background而不是android:textcolor)
这段代码崩溃了.它说"二进制XML文件行#4标签需要'drawable'属性或子标签定义drawable.但如果我尝试使用android:textColor,如上面的链接所述,它工作正常.所以它必须是背景问题.我如果没有必要,我不想创建一个9patch-png(基本上我只需要一个"可点击"的矩形,所以我使用带有彩色背景的按钮)
Kon*_*rov 83
正如您的错误所述,您必须为项目定义可绘制的属性(出于某种原因,在背景定义时需要它),因此:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/red"/> <!-- pressed -->
<item android:state_focused="true" android:drawable="@color/blue"/> <!-- focused -->
<item android:drawable="@color/black"/> <!-- default -->
</selector>
Run Code Online (Sandbox Code Playgroud)
另请注意,drawable属性不接受原始颜色值,因此您必须将颜色定义为资源.在res/values文件夹中创建colors.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="black">#000</color>
<color name="blue">#00f</color>
<color name="red">#f00</color>
</resources>
Run Code Online (Sandbox Code Playgroud)
Sre*_*ram 28
在您指向的URL中,button_text.xml用于设置textColor属性.这就是他们在res/color文件夹中有button_text.xml的原因,因此他们使用了@ color/button_text.xml
但是您正在尝试将其用于背景属性.background属性在res/drawable文件夹中查找.
检查这个我从互联网上得到这个选择器自定义按钮.我没有链接.但我感谢这个海报.它帮助了我.这个在drawable文件夹中
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<gradient
android:startColor="@color/yellow1"
android:endColor="@color/yellow2"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@color/grey05" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item android:state_focused="true" >
<shape>
<gradient
android:endColor="@color/orange4"
android:startColor="@color/orange5"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@color/grey05" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:endColor="@color/white1"
android:startColor="@color/white2"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@color/grey05" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
我在我的main.xml布局中使用了这样的
<Button android:id="@+id/button1"
android:layout_alignParentLeft="true"
android:layout_marginTop="150dip"
android:layout_marginLeft="45dip"
android:textSize="7pt"
android:layout_height="wrap_content"
android:layout_width="230dip"
android:text="@string/welcomebtntitle1"
android:background="@drawable/custombutton"/>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.维克是对的.
编辑:这是colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="yellow1">#F9E60E</color>
<color name="yellow2">#F9F89D</color>
<color name="orange4">#F7BE45</color>
<color name="orange5">#F7D896</color>
<color name="blue2">#19FCDA</color>
<color name="blue25">#D9F7F2</color>
<color name="grey05">#ACA899</color>
<color name="white1">#FFFFFF</color>
<color name="white2">#DDDDDD</color>
</resources>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
142327 次 |
| 最近记录: |