更改背景是否也会更改 LinearLayout 的填充?
我有以下LinearLayout
。我不明白的是,如果我将背景设置为另一张图像,填充信息将被重置。有办法防止这种情况吗?
<LinearLayout android:id="@+id/aPanel"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:background="@drawable/bkground"
android:paddingLeft="15dp" android:paddingRight="15dp">
<!-- some children here -->
</LinearLayout>
当我更改 LinearLayout 的背景可绘制元素时,我看到子项的位置发生了移动 aPanel。
I have the following LinearLayout
. What I don't understand is if I set the background to another image, the padding information are reset. Is there a way to prevent this?
<LinearLayout android:id="@+id/aPanel"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:background="@drawable/bkground"
android:paddingLeft="15dp" android:paddingRight="15dp">
<!-- some children here -->
</LinearLayout>
I see the position of the children get shifted when I change the background drawable of the LinearLayout
aPanel.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是更改
View
上的背景Drawable
时的默认行为。 Android 开发者之一 Romain Guy 表示,“设置图像会重置填充的原因是因为 9 补丁图像可以对填充进行编码。”请参阅类似问题中的完整答案。解决方法是每次更改背景可绘制时重置代码中的填充。
This is the default behavior when changing the background
Drawable
on aView
. According to Romain Guy, one of the Android developers, "The reason why setting an image resets the padding is because 9-patch images can encode padding." See his full answer in a similar question.The fix is to reset the padding in code each time you change the background drawable.
这是一个类似的问题。
简而言之,答案是:
重置填充的原因是因为可绘制对象可能是 9 补丁可绘制对象。
This is a similar question.
in short, the answer would be :
The reason for the padding being reset is because the drawable might be a 9-patch drawable .
您可以使用 shape 设置单色或图像背景并应用填充,如下所示:
You can use shape to set the background with single colour or image and apply padding like this: