我想在我的应用程序设计中使用表格,但与Android的XML布局中的HTML不同,您无法使用百分比设置某些内容的宽度。从Google上看,似乎我可以使用“layout_weight”来获得相同的功能,只要这些值加起来为100.来自这个问题的信息(http://stackoverflow.com/questions/3629331/android-trying-to -understand-androidlayout-weight)我写了我的布局,似乎工作正常。
这是它的样子& XML文件:http://i.imgur.com/rCjKk.png
<?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">
<TableLayout
android:id="@+id/tableLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow
android:id="@+id/tablerow1"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="10">
</TableRow>
<TableRow
android:id="@+id/tablerow2"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="80">
</TableRow>
<TableRow
android:id="@+id/tablerow3"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="10">
<TableRow
android:id="@+id/tablerow4"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="50">
</TableRow>
<TableRow
android:id="@+id/tablerow5"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="50">
</TableRow>
</TableRow>
</TableLayout>
</LinearLayout>
但是,当我向此布局添加按钮时,它会断开,如下所示:http://i.imgur.com/sKxbv.png
<?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">
<TableLayout
android:id="@+id/tableLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow
android:id="@+id/tablerow1"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="10">
</TableRow>
<TableRow
android:id="@+id/tablerow2"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="80">
</TableRow>
<TableRow
android:id="@+id/tablerow3"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="10">
<TableRow
android:id="@+id/tablerow4"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="50">
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Speak">
</Button>
</TableRow>
<TableRow
android:id="@+id/tablerow5"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="50">
<Button
android:id="@+id/button2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Listen">
</Button>
</TableRow>
</TableRow>
</TableLayout>
</LinearLayout>
任何人都可以向我解释为什么会这样吗?我只想要10%,80%和10%的三行,然后两行占据最后一行宽度的50%。
答案 0 :(得分:2)
我完全不清楚为什么这对TableLayout
不起作用,我尝试了很多但无法让它发挥作用。但是,它可以用于“LinearLayouts”,所以如果你能和它们一起生活:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" android:orientation="vertical">
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent" android:layout_weight="1" android:layout_height="0dp"></LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="8"></LinearLayout>
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="match_parent" android:layout_weight="1" android:layout_height="0dp">
<Button
android:text="Button"
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_weight="1"></Button>
<Button
android:text="Button"
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_weight="1"></Button>
</LinearLayout>
答案 1 :(得分:0)
如果我理解正确,问题是按钮正在推动父母?
如果有,请尝试android:layout_height="wrap_content"
而不是按钮。
答案 2 :(得分:0)
这不起作用的原因是您尝试提供TableRow大小,然后将其添加到内部内容的大小。你应该对TableLayout做什么是让内容视图控制大小。您的问题是,您需要一些允许按钮水平共享空间的内容,与高度的权重无关。
实际上,TableRow只是一个水平的LinearLayout,因此在底部TableRow中有两个TableRows是多余的,只需用一个LinearLayout替换它。
如果不知道前两行中会包含哪些内容,很难说什么是最好的,但TableLayout可能不是最适合您想要的内容。