Android中Button的默认高度问题
程序员文章站
2022-05-24 15:41:49
...
闲来无事,瞅着自己的app不是很顺眼,想把一个经常用到的按钮调得窄一点。
想着是件很简单的事情,这不换一个窄一点的背景图不就行了吗?可是事与愿违,我让UI帮我切了好几张更窄的图放进去,可是完全不起作用,于是我把矛头指向了UI妹子,埋怨了UI妹子一通。然后着手自己写一个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开头的主题即可
推荐阅读
-
Android 使用volley过程中遇到的问题解决办法
-
Android中的Button自定义点击效果实例代码
-
Android关于WebView中无法定位的问题解决
-
Android开发中button按钮的使用及动态添加组件方法示例
-
Android中ImageView无法居中的问题解决方法
-
完美解决python中ndarray 默认用科学计数法显示的问题
-
Android开发 RadioButton使用中遇到的问题与解决方法
-
Android中访问证书有问题的SSL网页的方法
-
Android获取清单文件中的meta-data,解决碰到数值为null的问题
-
Android studio Kotlin中配置GRPC和protobuf时出现的一些问题总结