欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android中Button的默认高度问题

程序员文章站 2022-05-24 15:41:49
...

闲来无事,瞅着自己的app不是很顺眼,想把一个经常用到的按钮调得窄一点。

Android中Button的默认高度问题

想着是件很简单的事情,这不换一个窄一点的背景图不就行了吗?可是事与愿违,我让UI帮我切了好几张更窄的图放进去,可是完全不起作用,于是我把矛头指向了UI妹子,埋怨了UI妹子一通Android中Button的默认高度问题。然后着手自己写一个shape出来,万万没想到,不管我怎么调整,这个按钮还是那么粗。下面贴出我的Button和XML代码

<Button
        android:textSize="18sp"
        android:textColor="@color/white"
        android:text="完成"
        android:id="@+id/complete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:layout_marginTop="60dp"
        android:background="@drawable/button_red" />
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 圆角 -->
    <corners android:radius="5dp" /><!-- 设置圆角半径 -->

    <!-- 大小 -->
    <size android:width="320dp" android:height="5dp"/><!-- 宽度和高度 -->

    <!-- 填充 -->
    <solid  android:color="@color/red"/><!-- 填充的颜色 -->

</shape>

这一定是灵异事件,于是我打开了另一个app求证,果然是灵异事件,另一个app的高度想怎么调就怎么调!但是冷静下来想一想,到底是为什么呢?思前想后发现两个app的主题不一样

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>
<style name="AppBaseTheme" parent="android:Theme.Light"></style>

果真如此,我把主题换为android:Theme.Light高度就可以随意调整,于是翻了翻Theme.AppCompat.Light.NoActionBar的源码,原来当前主题下Button有默认最小高度和宽度的设置

 <style name="Base.Widget.AppCompat.ActionButton" parent="RtlUnderlay.Widget.AppCompat.ActionButton">
        <item name="android:background">?attr/actionBarItemBackground</item>
        <item name="android:minWidth">@dimen/abc_action_button_min_width_material</item>
        <item name="android:minHeight">@dimen/abc_action_button_min_height_material</item>
        <item name="android:scaleType">center</item>
        <item name="android:gravity">center</item>
        <item name="android:maxLines">2</item>
        <item name="textAllCaps">@bool/abc_config_actionMenuItemAllCaps</item>
    </style>

想要去掉默认限制,只需要设置android.minHeight为0,但是需要一个一个修改Button的属性。另一种方案是修改app的主题,选择以android:Theme开头的主题即可