零
一、 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开发的初学者,如果我有错误的地方或者不足的话欢迎大家指正。希望与大家一同进步。