如果 button 宽高设置 wrap_content 并设置了 background 为一个图片的时候,会出现 wrap_content 无效的情况,针对这个问题我们查看到 AppCompat 主题 Button 的默认 style 是"Base.Widget.AppCompat.Button"
<style name="Base.Widget.AppCompat.Button" parent="android:Widget">
<item name="android:background">@drawable/abc_btn_default_mtrl_shape</item>
<item name="android:textAppearance">?android:attr/textAppearanceButton</item>
<item name="android:minHeight">48dip</item>
<item name="android:minWidth">88dip</item>
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
<item name="android:gravity">center_vertical|center_horizontal</item>
</style>
可见默认值 android:minHeight = 48dip android:minWidth = 88dip
恍然大悟,在自己布局中设置 android:minHeight 和 android:minWidth 属性即可解决问题!