包括一个背景可绘制的 foobars 我在 Android 中的布局。想法为啥?

Posted

技术标签:

【中文标题】包括一个背景可绘制的 foobars 我在 Android 中的布局。想法为啥?【英文标题】:Including a background drawable foobars my layout in Android. Ideas why?包括一个背景可绘制的 foobars 我在 Android 中的布局。想法为什么? 【发布时间】:2010-12-13 18:22:33 【问题描述】:

如果我的根布局中不包含背景,那么一切都会按我的预期呈现:

alt text http://dl.dropbox.com/u/299320/correct.png

但是,如果我只在背景中添加一行,那么布局就会完全混乱:

alt text http://dl.dropbox.com/u/299320/foobared.png

XML 布局的相关位是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width ="fill_parent"
    android:layout_
    android:paddingRight ="20dip" 
    android:paddingLeft  ="20dip"
    android:gravity      ="center_vertical"
    android:background   ="@drawable/main_background">

从字面上看,上述两个屏幕截图之间的唯一区别是包含android:background="@drawable/main_background"。如果你能在这里帮助我,我会给你一个 cookie :)

【问题讨论】:

对我来说,似乎在运行时它们看起来是正确的。仅在设计器中布局看起来很糟糕。 【参考方案1】:

至于为什么你会在背景中体验到你现在的样子,可能是你的背景图像不知何故被重力所吸引,但这只是一个猜测。

作为一种解决方法,请将您的整个内容包含在 FrameLayout 中。使FrameLayout 的第一个孩子成为具有您背景的ImageView。使 FrameLayout 的第二个子项成为您现有的 LinearLayout (sans android:background) 属性。由于FrameLayoutRelativeLayout 允许堆叠,这将导致您的LinearLayout 出现在图像上方,并应为您提供所需的视觉效果。

【讨论】:

伙计,这很烦人。我希望我能知道为什么我正在做的事情不起作用。不过,您的解决方案有效,谢谢。 我遇到了类似的问题,花了几个小时想知道为什么。从来不知道背景图片为什么会这样。

以上是关于包括一个背景可绘制的 foobars 我在 Android 中的布局。想法为啥?的主要内容,如果未能解决你的问题,请参考以下文章

形状可绘制为背景,底部有一条线

为 TextView 的一部分设置可绘制背景

Android可绘制背景角不删除

如何将可绘制背景设置为仅将数字字符串转换为 android 中的另一个字符串?

具有渐变的可绘制视图背景在预览中正确显示但在模拟器中不正确

在 EditText 背景外绘制复合可绘制对象