android:background 在 style.xml 中不起作用

Cha*_*nki 9 android android-layout android-styles

任何人都可以就以下问题提出建议。

我尝试使用具有 drawable(curve_button.xml) 文件的自定义按钮样式。

颜色已经应用并且看起来不错,但它似乎有问题, <item name="android:background">@drawable/curve_button</item>因为它没有应用。

样式文件

 <style name="CustomButton" parent="Widget.AppCompat.Button.Borderless.Colored">
    <item name="colorButtonNormal">@color/book_appointment</item>
    <item name="android:textColor">@android:color/white</item>
    <item name="android:background">@drawable/curve_button</item>
  </style> 
Run Code Online (Sandbox Code Playgroud)

曲线按钮.xml

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
  <item>
    <shape android:shape="rectangle">
      <padding
         android:paddingLeft="34dp"
         android:paddingRight="34.4dp"
         android:paddingTop="16dp"
         android:paddingBottom="16dp"
        />
      <corners android:radius="8dip" />          
    </shape>
  </item>
</selector>
Run Code Online (Sandbox Code Playgroud)

按钮布局

<Button
            android:id="@+id/idBookAppontment"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:text="Book Appointment"
            android:theme="@style/CustomButton"
            android:layout_marginBottom="12dp"
            android:layout_marginTop="6dp"
            android:layout_marginLeft="38dp"
            android:layout_marginRight="37dp"            
            android:inputType="textCapWords"
            android:layout_gravity="bottom"
            local:MvxBind="Typeface StringToFont('Effra_Rg')"
            android:layout_below="@id/providerTabbarHost"
            android:layout_alignParentBottom="true" />
Run Code Online (Sandbox Code Playgroud)

Nil*_*hod 1

用这个

    <?xml version="1.0" encoding="utf-8" ?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape android:shape="rectangle">
                <padding android:paddingBottom="16dp" android:paddingLeft="34dp" android:paddingRight="34.4dp" android:paddingTop="16dp" />
                <solid android:color="@color/colorAccent" />
                <corners android:radius="8dip" />
            </shape>
        </item>

</selector>
Run Code Online (Sandbox Code Playgroud)

而不是这个

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
  <item>
    <shape android:shape="rectangle">
      <padding
         android:paddingLeft="34dp"
         android:paddingRight="34.4dp"
         android:paddingTop="16dp"
         android:paddingBottom="16dp"
        />
      <corners android:radius="8dip" />          
    </shape>
  </item>
</selector>
Run Code Online (Sandbox Code Playgroud)

  • 只是为了更新,如果我在按钮控件中使用 android.background="@drawable/curve_button" 直接使用 curve_button.xml ,它的工作正常。正如我提到的,它不符合风格。请建议 (2认同)