Android之哭笑不得的BUG--xml设置的padding不起作用,幕后黑手竟然是?

一、 BUG描述

好久不见,小德又回来了。
但是一回来就遇到一个奇怪的BUG,简单来说就是我在xml中设置了padding,但是一看效果没显示出来,无论设置多大的padding都没用。
(滑稽time)第一次,有了喜欢的语言,还安装的最好用的编译器,两份喜悦相互重叠,这双重的喜悦有带来更多更多的喜悦,本应已经得到了梦幻一般的幸福时光。然而,为什么,会变成这样。
在被拖出去打死之前,我们还是先看看具体代码吧。

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_card"
    android:layout_width="255dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:layout_marginBottom="15dp"
    android:paddingLeft="15dp"
    android:paddingRight="15dp"
    android:background="@drawable/bg_card_shadow"
    android:clipToPadding="false"
    android:orientation="vertical">
    ...
</LinearLayout>
复制代码

很正常的代码对不对,理论上来说左右会有15dp的padding,但是运行效果并没有padding,即使我试了试padding100dp。

二、怎么解决

在Stack Overflow上搜索了一下,还真找到了相同的BUG,原文点击这里,我就做点简单的搬运解释吧。

遇到问题的老哥和我一样,使用了9patch图设置了背景,之后padding就没效果了,这可能就是一个bug,设置了background后padding就失效。有回答提出了两种解决方案:

  if(condition) {
    int bottom = theView.getPaddingBottom();
    int top = theView.getPaddingTop();
    int right = theView.getPaddingRight();
    int left = theView.getPaddingLeft();
    theView.setBackgroundResource(R.drawable.entry_bg_with_image);
    theView.setPadding(left, top, right, bottom);
  }
复制代码

或者:

  int pad = resources.getDimensionPixelSize(R.dimen.linear_layout_padding);
  theView.setBackgroundResource(R.drawable.entry_bg_with_image);
  theView.setPadding(pad, pad, pad, pad);
复制代码

总之就是在设置背景后再设置一次padding就行了。

三、 解决这种BUG有什么感想

感想?不敢想,这种BUG就记住就行了。有一点收获就是Stack Overflow真是个神奇的网站,你想得到的想不到的、遇到的遇不到的BUG,这里基本都有。

//作为Android开发的初学者,如果我有错误的地方或者不足的话欢迎大家指正。希望与大家一同进步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值