我有一个xml文件res / color / btn_black,它允许我对按钮应用渐变外观。
我可以通过调用:
成功地在layout.xml中使用它<Button
android:background="@color/btn_black"
/>
在其他地方,我用Java动态创建按钮,我想应用相同的样式。当我尝试使用时:
myButton.setBackgroundColor(getResources().getColor(R.color.btn_black));
我收到此错误:
android.content.res.Resources$NotFoundException:
File res/color/btn_black.xml from color state list resource ID #0x7f040001
这似乎是我在这里找到的其他问题的正确方法,但它对我不起作用。我做错了什么?
编辑:这是文件btn_black.xml以供参考
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid
android:color="#343434" />
<stroke
android:width="1dp"
android:color="#171717" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#343434"
android:endColor="#171717"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#171717" />
<corners
android:radius="4dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
答案 0 :(得分:2)
看起来像colors.xml中的颜色以错误的方式定义。您的colors.xml应如下所示:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="btn_black">#000000</color>
</resources>
如我所见,你已经定义了res / color / btn_black.xml,出了什么问题。您需要在/ res / values /目录中创建colors.xml文件。
如果你有一个渐变xml文件,那么你需要把它放在/ res / drawable /文件夹中并调用myButton.setBackground(getResources()。getDrawable(R.drawable.btn_black))方法。
答案 1 :(得分:0)
我认为最好的解决方案是为具有特定样式的按钮定义布局。 然后,您可以使用您创建的布局来膨胀按钮。
请参阅此问题以获取具体帮助android set style in code
因此,在您的情况下,您可以使用具有已定义布局的xml文件并对以编程方式创建的按钮进行充气