我正在尝试使用线性布局开发一个计算器应用程序,但是我不熟悉android开发,所以我不知道写它的人... 我如何制作它,以便例如一行中有3个按钮(它们占据整个水平空间),然后第二行包含3个按钮?
示例:
[ 7 8 9 ]
[ 4 5 6 ]
[ 1 2 3 ]
答案 0 :(得分:1)
我建议使用TableLayout,因为在LinearLayout中,您可能会遇到警告“嵌套权重对性能不利”。您需要在此使用大量android:weightSum来填充所有空格。 试试下面的那个。
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="3"
>
<TableRow
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:weightSum="3">
<Button
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="7"
/>
<Button
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="8"
/>
<Button
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="9"
/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:weightSum="3">
<Button
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="4"
/>
<Button
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="5"
/>
<Button
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="6"
/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:weightSum="3">
<Button
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="3"
/>
<Button
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="2"
/>
<Button
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="1"
/>
</TableRow>
</TableLayout>
答案 1 :(得分:0)
不要使用LinearLayout。请改为在RelativeLayout中尝试RelativeLayouts。
你也可以使用TableLayout,但我发现RelativeLayout可以更好地适应不同的屏幕几何形状。
答案 2 :(得分:0)
如果你想坚持使用LinearLayout,你可能会想要这样的东西。正如其他人所指出的,TableLayout可能更强大。我发现LinearLayouts非常简单。考虑到你的应用程序的简单性,我发现很难相信它会给任何Android设备带来压力,除非在屏幕上做动画和事情。此外,我确定你需要一个空间用于计算器的其他组件,这应该非常简单地放入这个布局。你可以添加另一级别的嵌套或改变你的权重以适应更小的行显示等式/答案的顶部。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout android:layout_width="match_parent"
android:layout_height="0dp" android:layout_weight="1"
android:orientation="horizontal">
<Button android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="7"
/>
<Button android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="8"
/>
<Button android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="9"
/>
</LinearLayout>
<LinearLayout android:layout_width="match_parent"
android:layout_height="0dp" android:layout_weight="1"
android:orientation="horizontal">
<Button android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="4"
/>
<Button android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="5"
/>
<Button android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="6"
/>
</LinearLayout>
<LinearLayout android:layout_width="match_parent"
android:layout_height="0dp" android:layout_weight="1"
android:orientation="horizontal">
<Button android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="1"
/>
<Button android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="2"
/>
<Button android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="3"
/>
</LinearLayout>
</LinearLayout>
答案 3 :(得分:0)
我建议使用GridLayout。 (http://developer.android.com/reference/android/widget/GridLayout.html)
由于GridLayout在Android 4及更高版本上可用,您可能需要检查此其他问题以添加旧版本的兼容性: