Android开发中的线性布局

时间:2012-11-16 01:13:56

标签: android android-layout android-xml

我正在尝试使用线性布局开发一个计算器应用程序,但是我不熟悉android开发,所以我不知道写它的人... 我如何制作它,以便例如一行中有3个按钮(它们占据整个水平空间),然后第二行包含3个按钮?

示例:

 [ 7   8   9 ]
 [ 4   5   6 ]
 [ 1   2   3 ]

4 个答案:

答案 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及更高版本上可用,您可能需要检查此其他问题以添加旧版本的兼容性:

How to make Android GridLayout compatible to older version?