我正在学习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" />
有谁知道为什么会这样?感谢
答案 0 :(得分:1)
如果您的资源文件在filename中包含大写字母,则应将其更改为小写。
android:background="@drawable/SignInButtonStyle"
将您的真实文件名更改为signinbuttonstyle.xml并更改您的代码:
android:background="@drawable/signinbuttonstyle"
答案 1 :(得分:1)
您的可绘制定义中存在一些问题:
xmlns:android="https://schemas.android.com/apk/res/android"
必须为xmlns:android="http://schemas.android.com/apk/res/android"
。删除http s 上的“s”。#
才有效。以下是更正的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构建的工具。它旨在立即突出显示这样的错误。