2011-06-09 49 views
2

是否可以让布局占据一定比例的屏幕空间?允许布局占据屏幕空间的百分比?

我有2个布局目前一个占用了大约130dip高度,这对大多数屏幕来说都很好,但是当我切换到landscape时,其他的linearlayout在某些屏幕尺寸上几乎看不到。我将如何确保每个屏幕都有相同的屏幕空间?

+0

如果一切都失败了,你可以抓住屏幕尺寸并手动执行getWindowManager()。getDefaultDisplay();然后计算可用的高度并绝对地设置你的布局。不建议,但如果你没有其他选择。 – 2011-06-09 16:20:19

回答

4

android:layout_weight的每个布局设置相同的值。

例子:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" 
        android:layout_weight="1" android:background="#FF0000" /> 
    <LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" 
        android:layout_weight="1" android:background="#0000FF" /> 
</LinearLayout> 
+0

我在最近的项目中遇到了一些与'layout_weight'有关的问题。看起来重量只适用于容器允许增长的数量,并不取决于容器已占用多少空间。我的解决方案是在运行时通过根据窗口大小计算宽度来修改它。所以通常它可以工作,但是试图使用列表视图来实现表格视图不会。 – smith324 2011-06-09 17:15:20

+0

@ smith324:在运行时计算大小适用于所有情况,但在我看来,它应作为最后的手段。我没有太多经验,所以我可能会(非常)错误。 – 2011-06-09 17:24:31

+0

@ smith324:你是否将layout_height设置为0dp?它会根据你的说法计算“剩余”高度,所以你对它撒谎并告诉它,每个孩子的身高都是0dp,正如Gabriel所做的那样。 – jamie 2011-12-21 09:42:40

0

在每个要采取平等的空间项目的设置android:layout_weight = "1"。这将使它适用于任何尺寸的屏幕。

android:layout_width设置为相同的值将不适用于所有屏幕尺寸。

...但是使用layout_weight自动分配每个同样,无论屏幕大小

+2

如果您想要指定一个百分比例如android:layout_weight =“25”和android:layout_weight =“75”分数为25:75 – rurouni 2011-06-09 16:40:24

+1

有关权重系统的最疯狂的方面之一是,有时似乎重量值倒退。只是要记住 – 2012-09-19 15:38:02

1

使用android:layout_weight的,这里与an exmaple文档:

这里有一个剥离下来例如:

<LinearLayout 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:orientation="horizontal" 
    > 
    <LinearLayout 
     android:layout_height="match_parent" 
     android:layout_width="0dip" 
     android:layout_weight="0.5" 
    /> 
    <LinearLayout 
     android:layout_height="match_parent" 
     android:layout_width="0dip" 
     android:layout_weight="0.5" 
    /> 
</LinearLayout> 

那将使两个LinearLayout的每一个占据屏幕的一半。