XML文件使Android按钮消失



我正在学习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 中不允许大写字母

最新更新