我正在学习Xamarin Android,我有一个xml文件,我想用它来自定义按钮。但是每当我将xml文件"应用"到我的按钮时,按钮就会消失。这是我的 xml 文件:
<selector xmlns:android="https://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<layer-list>
<item android:right="5dp" android:top="5dp">
<shape>
<corners android:radius="2dp"/>
<solid android:color="#D6D6D6"/>
</shape>
</item>
<item android:bottom ="2dp" android:left="2dp">
<shape>
<gradient android:angle="270" android:endColor="#4A6EA9" android:startColor="4A6EA9"/>
<stroke android:width="1dp" android:color="#BABABA"/>
<corners android:radius="4dp"/>
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp"/>
</shape>
</item>
</layer-list>
</item>
<item android:state_pressed="true">
<layer-list>
<item android:right="5dp" android:top="5dp">
<shape>
<corners android:radius="2dp"/>
<solid android:color="#D6D6D6"/>
</shape>
</item>
<item android:bottom ="2dp" android:left="2dp">
<shape>
<gradient android:angle="270" android:endColor="7C97C1" android:startColor="4A6EA9"/>
<stroke android:width="1dp" android:color="#BABABA"/>
<corners android:radius="4dp"/>
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp"/>
</shape>
</item>
</layer-list>
</item>
</selector>
这是我在布局中的按钮代码:
<Button
android:text="Log In"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="10"
android:textSize="15dp"
android:background="@drawable/SignInButtonStyle"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:id="@+id/IDLI" />
有谁知道为什么会这样?谢谢
可绘制对象定义中存在一些问题:
- 1:
xmlns:android="https://schemas.android.com/apk/res/android"
必须xmlns:android="http://schemas.android.com/apk/res/android"
。将"s"放在 https 上。 - 2:你的几种颜色只是整数。它们需要开头的
#
才能有效。
以下是更正后的 xml:
<?xml version="1.0" encoding="UTF-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<layer-list>
<item android:right="5dp" android:top="5dp">
<shape>
<corners android:radius="2dp"/>
<solid android:color="#D6D6D6"/>
</shape>
</item>
<item android:bottom ="2dp" android:left="2dp">
<shape>
<gradient android:angle="270" android:endColor="#4A6EA9" android:startColor="#4A6EA9"/>
<stroke android:width="1dp" android:color="#BABABA"/>
<corners android:radius="4dp"/>
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp"/>
</shape>
</item>
</layer-list>
</item>
<item android:state_pressed="true">
<layer-list>
<item android:right="5dp" android:top="5dp">
<shape>
<corners android:radius="2dp"/>
<solid android:color="#D6D6D6"/>
</shape>
</item>
<item android:bottom ="2dp" android:left="2dp">
<shape>
<gradient android:angle="270" android:endColor="#7C97C1" android:startColor="#4A6EA9"/>
<stroke android:width="1dp" android:color="#BABABA"/>
<corners android:radius="4dp"/>
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp"/>
</shape>
</item>
</layer-list>
</item>
</selector>
(自我推销免责声明)我使用 MFractor(我为 Xamarin Studio 构建的工具)中包含的资源静态分析器发现了这些问题。它旨在立即突出显示此类错误。
如果资源文件在文件名中包含大写字母,则应将其更改为小写。
android:background="@drawable/SignInButtonStyle"
将您的真实文件名更改为登录按钮样式.xml并更改您的代码:
android:background="@drawable/signinbuttonstyle"
见下文:安卓 res 中不允许大写字母