解决在Android中给Button设置Padding无效的问题

Android CheckBox中设置padding无效解决办法 Android CheckBox中设置padding无效解决办法 CheckBox使用本地图片资源 CheckBox是Android中用的比较多的一个控件,不过它自带的button样式比较丑,通常都会替换成本地的资源图片。使用本地资源图片很简单,设置android:button属性为一个自定义的包含selector的drawable文件即可。 例如android:button=”@drawable/radio_style”。radio_style.xml定义如下。checked和unchecked分别是选中和未选中时使用的图片资源。 <selector xmlns:android=http 立即下载

转自:http://blog.youkuaiyun.com/qq_35071078/article/details/75570940

在Xml中给Button设置padding=0和利用代码给Button设置padding=0都是无效的,是因为,这种情况下,Button的宽高是受TextView中的变量:mMinWidth,mMinHeight和View中的变量:mMinWidth,mMinHeight来共同决定的。

首先说一下,TextView是集成自View的,而Button又是集成自TextView的,但其实上,Button就是一个TextView,只是重写了构造方法,传入了Button的专有Style而已:

public class Button extends TextView {
    public Button(Context context) {
        this(context, null);
    }

    public Button(Context context, AttributeSet attrs) {
        this(context, attrs, com.android.internal.R.attr.buttonStyle);
    }

    public Button(Context context, AttributeSet attrs, int defStyleAttr) {
        this(context, attrs, defStyleAttr, 0);
    }

    public Button(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    public CharSequence getAccessibilityClassName() {
        return Button.class.getName();
    }
}
那么我们来看看TextView的onMeasure()方法:

这里写图片描述

会获取到text的宽度,但是在下面还会多次多宽度进行计算,在这两个地方:

这里写图片描述

首先,用了一个Math.max(width,mMinWidth)函数,这里的mMinWidth就是TextView的mMinWidth,我这个版本的源码默认的是176。 

然后下面这里又有一个Math.max()函数,其中是与getSupportedMinimumWidth()方法进行比较:

protected int getSuggestedMinimumWidth() {

return (mBackground == null) ? mMinWidth : max(mMinWidth, Background.getWinimumWidth());

}

getSupportedMinimumWidth()是View中的方法,所以这里的mMimWidth是View中的变量,默认的也是176.

所以为什么设置了padding=0之后还是没有效果,就很明显了。

解决方法:

在XML中:

android:minWidth="0dp"

android:minHeight="0dp"

android:padding="0dp"

这种方法,View中的变量和TextView中的变量是一起赋值的

在代码中:

Button b = (Button)findViewById(R.id.btn);

b.setPadding(0,0,0,0);

b.setMinWidth(0); //Button中的方法,改变Button(TextView)中的mMinWidth

b.setMinHeight(0); //Button中的方法,改变Button(TextView)中的mMinHeight

b.setMinimumHeight(0); //View中的方法,改变View中的mMinHeight

b.setMinimumWidth(0); //View中的方法,改变View中的mMinWidth

【数据同化第一期】基本概念介绍 阅读详情

相关推荐

faster lio 回环 加入GTSAM优化的记录

对Faster lio 加入回环、gtsam优化,在室外建图遇到的问题和过程

Nico_jion的博客 2599

android button padding,解决在Android中给Button设置Padding无效的问题

转自:http://blog.youkuaiyun.com/qq_35071078/article/details/75570940在Xml中给Button设置padding=0和利用代码给Button设置padding=0都是无效的,是因为,这种情况下,Button的宽高是受TextView中的变量:mMinWidth,mMinHeight和View中的变量:mMinWidth,mMinHeight来共同决...

weixin_42548816的博客 1166

Windows Server 搭建ftp服务

Windows Server 搭建ftp服务

ch258563的博客 1010

Android Button 常用属性设置,圆角,边框,点击事件

<Button <!--设置代表此button的id--> android:id="@+id/btn" android:layout_width="200dp" android:layout_height="200dp" <!--设置btn上显示的文字--> android:text="QQ"

IOS_fresh_monkey的博客 3万+

银河麒麟arm64 V10 SP1桌面系统高效部署onnxruntime推理环境实战

本文详细介绍了在银河麒麟arm64 V10 SP1桌面系统上高效部署onnxruntime推理环境的完整实战流程。从系统环境准备、关键依赖安装,到onnxruntime的安装验证,并以YOLOv5模型部署为例进行性能对比分析,提供了在国产化飞腾D2000平台上进行AI边缘推理的实用指南和避坑技巧。

ss78901的博客 636

从论文到生产:iSLIP优先级匹配算法在SDN交换机中的20年演进史

本文回顾了iSLIP优先级匹配算法在SDN交换机中的20年演进历程,从斯坦福大学的原始论文到现代芯片实现。通过独特的指针滑动和迭代循环机制,iSLIP算法显著提升了交换机的吞吐量和公平性,解决了传统FIFO调度的队头阻塞问题。文章详细探讨了算法在硬件实现中的工程挑战、开源实践及未来AI时代的智能调度方向。

weixin_29230649的博客 331

[Android studio] 第6节 Button控件

Button控件具有许多属性可以用来自定义其外观和行为。:设置Button的唯一标识符。在代码中可以使用这个ID引用Button。:设置Button中文本内容的对齐方式。:设置Button点击事件的回调方法。:设置Button显示的文本内容。:设置Button文本的颜色。:设置Button文本的大小。

AA2534193348的博客 3098

从圆形到椭圆:CenterNet中高斯热图半径的自适应优化策略

本文深入探讨了CenterNet目标检测模型中高斯热图生成策略的优化,针对传统圆形高斯核在处理长宽比差异大目标时的局限性,提出了自适应椭圆高斯核的解决方案。通过数学推导和代码实战,详细阐述了如何根据目标边界框尺寸动态计算椭圆长短轴半径,生成更贴合目标几何形状的热图监督信号,从而有效提升模型,尤其是对无人机、车辆等不规则目标的定位精度。

alice7model的博客 985

android button padding,关于Button的paddingBottom属性,我怎么设置后出了问题

如C按键,用之后文字内容相对于屏幕位置没动,Button却向下移动了,下面有一部分显示不出来了。这是怎么回事啊?附代码:android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:gravity="center_horizontal"andr...

weixin_42319263的博客 457

Altium Designer实战:手把手教你设计智能车竞赛疯狂电路组赛道(附封装库)

本文详细介绍了使用Altium Designer软件进行智能车竞赛“疯狂电路”组赛道设计的全流程实战指南。从理解比赛规则、搭建设计环境、创建专用元器件封装库,到电路布局、路径规划及设计输出验证,手把手教你高效完成符合计分标准的赛道图纸设计,并附上实用的封装库管理方法。

alice7model的博客 1321

ServiceNow Discovery & CMDB Interview Questions and Answers (2025)

【代码】ServiceNow Discovery & CMDB Interview Questions and Answers (2025)

weixin_47584092的博客 910

android 代码设置padding,解决在Android中给Button设置Padding无效的问题

在Xml中给Button设置padding = 0 和用代码给Button设置padding = 0 都无效,是因为,这种情况下,Button的宽高是受TextView中的变量:mMinWidth , mMinHeight和View中的变量:mMinWidth , mMinHeight来共同决定的。首先说一下,TextView是继承自View的,而Button又是继承自TextView的,但其实上...

weixin_32563411的博客 2432

32、生物信息学中的符号、缩写及相关概念解析

本文详细解析了生物信息学中常用的符号、缩写及相关概念,涵盖概率理论、函数表示、模型结构、图与集合、维度参数、神经网络、隐藏马尔可夫模型、双向架构、语法系统、系统发育树、微阵列分析以及核方法与支持向量机等多个领域。通过表格和mermaid流程图的形式,系统梳理了各类符号的定义与应用场景,并介绍了常见缩写的全称与意义。文章旨在帮助研究人员准确理解生物信息学中的基础术语,提升对基因表达分析、序列建模、机器学习等技术的理解与应用能力。

rrr55的博客 146

setPadding无效

问题: 在代码中动态创建一个Button,分别设置了setGravity、setPadding……等等的属性,但setPadding无论设置多大都无效。 解决: 通过查看代码,发现把setPadding写在setGravity之前,即 btnTemp.setPadding((int)getResources().getDimension(R.dimen.btn_index_padd

8677

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android CheckBox paddingleft 无效

Android CheckBox 的button在使用paddingleft时,button选择框没有效果,代码如下<CheckBox android:id="@+id/shopcar_checkbox_item" android:layout_width="wrap_content" android:layout_height="wrap_conte

soldierguard的专栏 3214

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android CheckBox中设置padding无效问题解决方法

解决android CheckBox点击区域过小,而设置padding又无效的问题。

ccpat的专栏 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Button中默认的padding

Android中button是有默认的padding的,最近发现button中空间很大,但是文字发生了换行,debug发现button默认有padding。     直接上代码。     @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

7217

[Android] Button 文字被截断解决方案

android button文字截断分析处理

csdn_lexli的博客 5537

Android Button有默认padding值的元凶!!!

刚给群里的小伙伴实现了一个自定义view,效果图如下当我正准备开心地告诉小伙伴我已经实现好了的时候,这个b没装好哈~~~为了跟小伙伴发的效果图达到几乎相似的效果,于是打算把button按钮样式也给写了(原谅我处女座哈!!)就是控件最下方的那两个按钮,看到这个按钮样式的时候,小伙伴是不是也第一时间想到定义一个shape文件就好了呢,所以我就去定义了一个shape文件:<?xml version="1.

vv_bug 1万+

android setBackgroundDrawable 的padding问题

setBackgroundDrawable 是在安卓旧API里面的,不过需要做低版本兼容用到设置背景,如果控件是TextView,使用setBackgroundDrawable的话,在华为机型里面会发现一个问题,就是Padding <TextView android:layout_width="wrap_content" android:layout

L有只大大熊 2704

如何用Terax命令面板高效导航代码与文件?完整指南

Terax 是一款仅约 7MB 的轻量级、终端优先的 AI 原生开发环境(基于 Tauri 2 + Rust + React 19 构建)。它的**命令面板**(Command Palette)是最高效的导航入口:一个弹窗,就能执行命令、全项目搜索代码、召回终端历史、切换主题,全程无需离开键盘。 [![Terax 终端界面](https://raw.gitcode.com/GitHub_Tren

gitblog_00664的博客 1055

Android动态改变Background后Padding无效的问题

在Layout中指定好background和padding以后,程序里面动态修改background之后padding就失效了,貌似是一个BUG,这里找到了一篇英文文章,简单翻译分享一下。 声明   欢迎转载,但请保留文章原始出处:)      博客园:http://www.cnblogs.com     农民伯伯: http://over140.cnblogs.com

Raleigh 1468

android 按钮用法,Android Button基本使用

Button是Android中一个非常简单的控件,在我们平时的项目中,可以说是非常的常见,使用率也是相当高。本身对于这个控件的用法也是很好掌握的,下面我们就从几个方面介绍一下它的用法,以及一些自定义Button的使用。按钮效果图1. 设置背景设置背景图xml布局:android:layout_width="match_parent"android:layout_height="wrap_conte...

weixin_35766308的博客 1460

Android 将Button设置为圆角

文件夹drawable中新建shape.xml: <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <padding android:left="

野草志 3676

CardView外侧白边、Button自带padding、ImmersionBar使用setTitleBar 高度失效

CardView外侧白边问题: 在CardView外层加上一层布局包裹,如ConstraintLayout或LinearLayout,则RecyclerView显示时中间分割处会显示淡色白边。 Button自带padding: 使用 Button 或 AppCompatButton 控件时,会有一个固定的高度,并且间距还很大。是因为控件本身就设有一个属性minHeight 导致的。解决:去掉...

jingbin_的博客 1817

android 控制按钮显示,Android Button基本使用

Button是Android中一个非常简单的控件,在我们平时的项目中,可以说是非常的常见,使用率也是相当高。本身对于这个控件的用法也是很好掌握的,下面我们就从几个方面介绍一下它的用法,以及一些自定义Button的使用。按钮效果图1. 设置背景设置背景图xml布局:android:layout_width="match_parent"android:layout_height="wrap_conte...

weixin_42493325的博客 754
上一篇: JSON与Map、Bean的相互转换
下一篇: View的坐标系以及x、rawX、translationX、scrollX的区别
leverge2009
博客等级 码龄14年 34粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值