Appcompat按钮背景样式

时间:2018-01-05 08:51:43

标签: android button styles

我有一个按钮样式,但backgroundcolorAccentcolorButtonNormal无法使用我的按钮。我尝试更改背景可绘制,并更改不同的颜色,并将style=更改为android:theme=但不会有帮助。这是我的风格:

 <style name="ButtonWithBorder" parent="Widget.AppCompat.Button.Colored">
    <item name="colorAccent">@color/colorPrimary</item>
    <item name="colorButtonNormal">@color/colorPrimary</item>
    <item name="android:textColor">@color/colorAccent</item>
    <item name="android:textAllCaps">true</item>
    <item name="background">@drawable/btn_border</item>
    <item name="android:textSize">@dimen/button_text_size</item>
</style>

我的按钮:

 <Button
        android:id="@+id/descriptionReserveButton"
        style="@style/ButtonWithBorder"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="12dp"
        android:layout_alignParentStart="true"
        android:layout_centerInParent="true"
        android:text="@string/reserve_place"
        />
    <Button

和我的背景:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_outline" android:state_pressed="true">
    <shape android:shape="rectangle">
        <solid android:color="@color/colorPrimary"/>
    </shape>
</item>
<item android:drawable="@drawable/btn_outline" android:state_focused="true">
    <shape android:shape="rectangle">
        <solid android:color="@color/colorPrimary"/>
    </shape>
</item>

<item android:drawable="@drawable/btn_outline"/>

我想为我的按钮设置一次样式,剩下的时间只使用这种样式。我如何接受我的样式按钮

我需要什么:

enter image description here

修改

我的错误在

<item name="background">@drawable/btn_border</item>

必须是<item name="android:background">@drawable/btn_border</item>

新屏幕

enter image description here

2 个答案:

答案 0 :(得分:2)

试试这个

   <Button
    android:id="@+id/descriptionReserveButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_centerInParent="true"        
    style="@style/MyButton"
    android:text="reserve_place" />

风格

 <style name="MyButton" parent="android:Widget.Material.Button" tools:targetApi="lollipop">
        <item name="android:textColor">#149aed</item>
        <item name="colorButtonNormal">#020e39</item>
        <item name="android:textAllCaps">true</item>
        <item name="android:background">@drawable/edterr</item>

    </style>

<强> @绘制/ edterr

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">


    <solid android:color="#030a64" />
    <stroke
        android:width="1dp"
        android:color="#149aed" android:dashWidth="5sp">
    </stroke>
    <corners android:radius="5dp" />

</shape>

答案 1 :(得分:1)

在styles.xml中为您的按钮创建一个带背景的样式:

<style name="ButtonStyle" parent="Widget.AppCompat.Button">
    <item name="android:background">@drawable/shape_round_rect</item>
</style>

drawable shape_round_rect.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
    <shape android:shape="rectangle">
        <stroke android:color="#2c73ca" />
        <corners android:radius="4dp" />
        <solid android:color="@color/colorPrimary" />
        <padding android:bottom="4dp" android:left="6dp" android:right="6dp" android:top="4dp" />
    </shape>
</item>
<item>
    <shape android:shape="rectangle">
        <stroke android:color="#2c73ca" />
        <corners android:radius="4dp" />
        <solid android:color="@color/colorPrimary" />
        <padding android:bottom="4dp" android:left="6dp" android:right="6dp" android:top="4dp" />
    </shape>
</item>
</selector>

并在按钮中设置样式:

<Button
    android:id="@+id/descriptionReserveButton"
    style="@style/ButtonStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_centerInParent="true"
    android:layout_margin="12dp"
    android:text="Reserve Place" />