Android: 设置对话框的尺寸("fill_parent" 是什么意思?)

3

在 Android 开发者指南中,关于创建自定义对话框的部分规定了一个起始布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/layout_root"
          android:orientation="horizontal"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:padding="10dp"
          >

如果我使用这段代码,会出现一个对话框位于屏幕中心,每侧有大约40像素的底层视图可见。

"fill_parent" 究竟是什么意思(在宽度和高度上)?

2个回答

1
回答Octavian Damiean的问题,我编写了一个应用程序,遵循创建自定义对话框中提供的代码。我将指定的Java代码放在空白应用程序的onCreate方法中(在super.onCreate(...)和setContentView(...)之后)。为了使其运行,我已经更改了Java代码,其中说“Context mContext = getApplicationContext();”变成了“Context mContext = this;”,并在最后添加了一行“dialog.show();”以显示对话框。
生成的屏幕如下所示:

this

虽然高度和宽度都设置为fill_parent,但宽度比屏幕宽度小一点,而高度比屏幕高度要小得多。

我认为填充不是按照你所说的方式工作。将其从10dip更改为0dip没有明显的差异(屏幕边缘和对话框边缘之间仍然有一个间隙)。将其更改为100 dip会导致以下结果:

alt text

我认为填充影响视图内对象的间距,而不是视图在其父级内的间距。


你说得对,我关于填充的理解是错误的。对此我感到抱歉。我实际想表达的是边距。 - Octavian Helm

0

它实际上意味着它所说的。它填充其父容器的整个空间。在这种情况下,由于填充属性,在每个侧面(即左、上、右、下)减去10dip。如果将其设置为wrap_content,它将只占用显示其内容所需的空间。

这里有关于fill_parent的更多信息,以及ViewGroup.LayoutParams的信息。


但是“fill_parent”被指定为高度和宽度,那么为什么对话框只填充屏幕垂直高度的一小部分呢? - prepbgg
@user250845:没有看到问题的截图,我无法确定,但我猜测您的LinearLayouts父元素的高度设置为某个特定尺寸。 - Octavian Helm
我不知道如何在这里包含截图,所以我已经将我的回复作为新答案提交了。 - prepbgg
我知道现在已经有点晚了,但这可能对未来的修订有所帮助。LinearLayout指定的布局参数对应于Dialog窗口中包含的视图。这意味着它们适用于窗口,因此如果您将FILL_PARENT放入其中,它将填充父窗口,并且大小将是实际在设备上显示的窗口大小。希望这能对您或其他人有所帮助。 - lblasa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接