首页 > Android 自定义Button样式后变扁

Android 自定义Button样式后变扁

效果如下 (第二个按钮)


所有的按钮均在一个带有android:stretchColumns="*"TableLayout的多个TableRow下。下帖代码。


main.xml

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/gray_bg"
    android:text="@string/calculator_multiply"
/>

gray_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <corners android:radius="5dp"/>
    <item android:drawable="@drawable/gray_default" android:state_pressed="false"></item>
    <item android:drawable="@drawable/gray_active" android:state_pressed="true"></item>
</selector>

gray_default.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <corners android:radius="5dp"/>
    <solid android:color="@color/gray_default"/>
</shape>

gray_active.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <corners android:radius="5dp"/>
    <solid android:color="@color/gray_active"/>
</shape>

这跟你应用设置的 Theme 有关,如果是 android:Theme 或者 android:Theme.Black 就会出现这种情况

解决办法1: 将 Theme 改为 android:Theme.Holo 或者 android:Theme.Holo.Light

解决办法2: 给 Button 添加 android:minHeight="48dp" 属性


本质原因是不同主题设置的padding不一样,那么最小的按钮高度/宽度就不同了。


因为你自定义了button的样式,但是没有做到跟系统默认的button样式一样,但是又将默认的样式覆盖,你可以改变shape中的其它属性来做到跟之前一样,推荐一个Android按钮制作神器,所见即所得。

【热门文章】
【热门文章】