在Android中,我试图基本上创建一个包含2行的表,其中1行表示10个像素,另一行表示屏幕的其余部分。在silverlight中,这相当于一个有2行的表,一个在“Auto”上,另一个在“*”上。
有没有办法做到这一点?我一直在玩布局权重,但这总是一个百分比,我希望1行是固定大小(基本上是wrap_content)。
有什么想法吗?
编辑: 我尝试了所建议的,但它没有工作..所以我希望第一行占用整个空间,除了第2行占用。第2行由2个按钮并排组成,第1行只是一个ListView。这是我有的:
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1" android:background="#FF0000">
<ListView android:id="@+id/edit_group_listView"
android:layout_width="fill_parent" android:layout_height="fill_parent" />
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_weight="0" android:background="#FFFF00">
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="50dip" android:stretchColumns="2">
<TableRow>
<Button android:text="@string/button_save" android:id="@+id/edit_group_save"
android:layout_width="150dip" android:layout_height="50dip"
android:enabled="false" android:layout_column="1"></Button>
<Button android:text="@string/button_cancel" android:id="@+id/edit_group_cancel"
android:layout_width="150dip" android:layout_height="50dip"
android:layout_column="3"></Button>
</TableRow>
</TableLayout>
</LinearLayout>
当我看到这一切时,我看到的是黄色线性布局(按钮),根本没有列表视图。列表视图有50个项目,我可以通过取消此设置来确认它是可见的。
答案 0 :(得分:1)
是的,实际上很容易。
第一个单元格的权重必须为0.第二个单元格的权重必须为1,并按宽度填充父级。这样它就会占用容器内的重新存放空间。
轻松!这是一个方便的例子
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="0" android:background="#FF0000">
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="SomeText" android:id="@+id/theview"/>
</LinearLayout>
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:background="#FFFF00">
</LinearLayout>
</LinearLayout>
=======================================
像Crayze一样让你过度复杂化!
首先。您不需要表格布局。
第二个问题是你将布局的两个高度都设置为fill_parrent。所以他们都在争夺屏幕尺寸。要解决此问题,您只需将两个布局大小设置为wrap_content即可。这将工作得很好。这里有一个例子,没有代码表。
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1" android:background="#FF0000">
<ListView android:id="@+id/edit_group_listView"
android:layout_width="fill_parent" android:layout_height="fill_parent" />
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_weight="0" android:background="#FFFF00">
<Button android:text="@string/button_save" android:id="@+id/edit_group_save"
android:layout_width="150dip" android:layout_height="50dip"
android:enabled="false" android:layout_column="1"></Button>
<Button android:text="@string/button_cancel" android:id="@+id/edit_group_cancel"
android:layout_width="150dip" android:layout_height="50dip"
android:layout_column="3"></Button>
</LinearLayout>
答案 1 :(得分:0)
使用布局权重并将固定的一个设置为0,另一个设置为任意数字。
答案 2 :(得分:0)
好吧,实际上我通过回顾Taranasus所写的内容来解决这个问题,这在一定程度上是准确的。
这是最终有效的XML:
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1" android:background="#FF0000">
<ListView android:id="@+id/edit_group_listView"
android:layout_width="fill_parent" android:layout_height="fill_parent" />
</LinearLayout>
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_weight="0" android:background="#FFFF00">
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="50dip" android:stretchColumns="2">
<TableRow>
<Button android:text="@string/button_save" android:id="@+id/edit_group_save"
android:layout_width="150dip" android:layout_height="50dip"
android:enabled="false" android:layout_column="1"></Button>
<Button android:text="@string/button_cancel" android:id="@+id/edit_group_cancel"
android:layout_width="150dip" android:layout_height="50dip"
android:layout_column="3"></Button>
</TableRow>
</TableLayout>
</LinearLayout>
此网站也提供了帮助:http://www.curious-creature.org/2009/02/22/android-layout-tricks-1/
问题在于: 1.方向必须是“垂直的”,根据文档实际上没有意义。 2.第二行(固定的一行)必须具有wrap_content的高度,这也没有意义,因为谷歌关于权重的文档明确指出这两个元素应该是fill_parent。