XML文件使Android按钮消失

时间:2016-02-29 06:28:19

标签: android xml button xamarin

我正在学习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" />

有谁知道为什么会这样?感谢

2 个答案:

答案 0 :(得分:1)

如果您的资源文件在filename中包含大写字母,则应将其更改为小写。

android:background="@drawable/SignInButtonStyle"

将您的真实文件名更改为signinbuttonstyle.xml并更改您的代码:

android:background="@drawable/signinbuttonstyle"

见下文: Capital letters not allowed in android res

答案 1 :(得分:1)

您的可绘制定义中存在一些问题:

  • 1:xmlns:android="https://schemas.android.com/apk/res/android"必须为xmlns:android="http://schemas.android.com/apk/res/android"。删除http s 上的“s”。
  • 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构建的工具。它旨在立即突出显示这样的错误。