Android中的普通按钮和自定义背景按钮的高度不匹配

时间:2016-06-03 05:03:41

标签: android android-custom-view android-button android-custom-drawable

我尝试为按钮设置不同的背景颜色。但与普通和自定义按钮相比,高度会有所不同。

enter image description here

布局文件:

    <Button
        android:id="@+id/btn_normal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:text="Normal" />

    <Button
        android:id="@+id/btn_custon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/custom_background"
        android:layout_toEndOf="@id/btn_normal"
        android:text="Custom"
        android:textColor="#FFFFFF" />

custom_bbackground.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape >
            <corners android:radius="6dp" />
            <solid android:color="#026267"/>
        </shape>
    </item>
    <item android:state_focused="true">
        <shape>
            <corners android:radius="6dp" />
            <solid android:color="#026267"/>
        </shape>
    </item>
    <item >
        <shape >
            <corners android:radius="6dp" />
            <solid android:color="#026267" />
        </shape>
    </item>
</selector>

3 个答案:

答案 0 :(得分:3)

使用AppCompat库的新版本v23.0.0,现在可以为Lollipop和Pre-Lollipop设备创建Material Design按钮。

如果您只想定义所有按钮的颜色,可以设置一个名为colorButtonNormal的特殊主题属性:

将此行添加到styles.xml

下的父主题中
<item name="colorButtonNormal">@color/yourColor</item>

有关详细信息,请参阅this

修改

为按钮制作自定义主题可以解决问题。

<style name="CustomTheme" parent="Widget.AppCompat.Button.Colored">
    <item name="colorButtonNormal">@color/yourcolor</item>
</style>

并且正在使用中。

<Button android:theme="@style/CustomTheme"/>

注意: 请确保您使用Widget.AppCompat.Button.Colored作为父级。

快乐编码..

答案 1 :(得分:0)

尝试为两个按钮和主要布局分配 android:layout_height =“match_parent”,在这个布局中,您将两个按钮的高度设置为包装内容,如 android:layout_height =“wrap_content “

答案 2 :(得分:-1)

默认按钮背景drawable有某种边距。这些边距只是图像两侧的透明像素。当您为按钮设置背景颜色时,这些边距会消失,因为按钮的整个矩形都填充了颜色。please see this link