是否可以让布局占据一定比例的屏幕空间?允许布局占据屏幕空间的百分比?
我有2个布局目前一个占用了大约130dip高度,这对大多数屏幕来说都很好,但是当我切换到landscape时,其他的linearlayout在某些屏幕尺寸上几乎看不到。我将如何确保每个屏幕都有相同的屏幕空间?
是否可以让布局占据一定比例的屏幕空间?允许布局占据屏幕空间的百分比?
我有2个布局目前一个占用了大约130dip高度,这对大多数屏幕来说都很好,但是当我切换到landscape时,其他的linearlayout在某些屏幕尺寸上几乎看不到。我将如何确保每个屏幕都有相同的屏幕空间?
为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>
我在最近的项目中遇到了一些与'layout_weight'有关的问题。看起来重量只适用于容器允许增长的数量,并不取决于容器已占用多少空间。我的解决方案是在运行时通过根据窗口大小计算宽度来修改它。所以通常它可以工作,但是试图使用列表视图来实现表格视图不会。 – smith324 2011-06-09 17:15:20
@ smith324:在运行时计算大小适用于所有情况,但在我看来,它应作为最后的手段。我没有太多经验,所以我可能会(非常)错误。 – 2011-06-09 17:24:31
@ smith324:你是否将layout_height设置为0dp?它会根据你的说法计算“剩余”高度,所以你对它撒谎并告诉它,每个孩子的身高都是0dp,正如Gabriel所做的那样。 – jamie 2011-12-21 09:42:40
在每个要采取平等的空间项目的设置android:layout_weight = "1"
。这将使它适用于任何尺寸的屏幕。
将android:layout_width
设置为相同的值将不适用于所有屏幕尺寸。
...但是使用layout_weight
自动分配每个同样,无论屏幕大小
如果您想要指定一个百分比例如android:layout_weight =“25”和android:layout_weight =“75”分数为25:75 – rurouni 2011-06-09 16:40:24
有关权重系统的最疯狂的方面之一是,有时似乎重量值倒退。只是要记住 – 2012-09-19 15:38:02
使用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的每一个占据屏幕的一半。
如果一切都失败了,你可以抓住屏幕尺寸并手动执行getWindowManager()。getDefaultDisplay();然后计算可用的高度并绝对地设置你的布局。不建议,但如果你没有其他选择。 – 2011-06-09 16:20:19