美文网首页
安卓button代码初始化默认内边距问题

安卓button代码初始化默认内边距问题

作者: 迷路的字母C | 来源:发表于2018-11-07 11:03 被阅读212次

    一般在xml布局文件中设置一个button,如果出现默认内边距,可以通过以下设置来消除默认的内边距:

    android:padding="0dp"
    android:minWidth="0dp"
    android:minHeight="0dp"
    

    但是今天需要用代码初始化一个button,理论上设置对应的属性就OK了,那么应该是这样的。

    Button button = new Button(context);
    button.setPadding(0, 0, 0, 0);
    button.setMinHeight(0);
    button.setMinWidth(0);
    
    结果事实证明,我还是太年轻,设置过之后什么都没有发生。 AE0DCB694DEBE07B264F61A25C954383.png

    Debug模式下,对比代码初始化的button和xml初始化的button,发现最小高度属性并没有修改,真是奇怪了!


    2D32E80CCC2B11A8CD4A05F8AA04CFBB.png

    搜索源码,原来是另一个方法在修改这个属性。于是修改为如下代码:

    Button button = new Button(context);
    button.setPadding(0, 0, 0, 0);
    button.setMinimumHeight(0);
    button.setMinimumWidth(0);
    

    然后运行,测试。emmmmmm......


    9EBDF232B6AE9FEE4DB1E5BEFD7C2252.jpg
    Button button = new Button(context);
    button.setPadding(0, 0, 0, 0);
    button.setMinimumHeight(0);
    button.setMinimumWidth(0);
    button.setMinHeight(0);
    button.setMinWidth(0);
    

    怎么可能还是不行。

    最后只好都加上了,问题也解决了,诡异的逻辑。后来查看了初始化的代码,其实是因为我使用的方法,系统调用了com.android.internal.R.attr.buttonStyle的样式,所以默认添加很多不必要的属性设置。其实初始化的时候,使用另外一个方法,这些凡人的东西都统统不见了。

    Button button = new Button(context, null, 0);
    

    相关文章

      网友评论

          本文标题:安卓button代码初始化默认内边距问题

          本文链接:https://www.haomeiwen.com/subject/cnmmxqtx.html