【问题标题】:Android: how to align views vertically and horizontallyAndroid:如何垂直和水平对齐视图
【发布时间】:2013-04-25 22:43:23
【问题描述】:

我想知道如何将按钮对齐如下:Button1 和 Button2-2 应该水平对齐,Button2-1 和 Button2-2 应该垂直对齐。

                        [Button2-1]
[other views] [Button1] [Button2-2]

这是我的代码,但它不起作用:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ButtonGroups"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/Button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="vertical" >

            <Button
                android:id="@+id/Button2-1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center" />

            <Button
                android:id="@+id/Button2-2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

已编辑:

为了更清楚,我在这里发布了更多代码,希望它可以更好地解释我的需求:

我想要的是将文本视图与图像按钮水平对齐,而垂直与上方的搜索栏对齐。

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ButtonGroups"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal" >

        <ImageButton
            android:id="@+id/Button00"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/background00"
            android:gravity="bottom"
            android:scaleType="center"
            android:src="@drawable/button00" />

         <ImageButton android:id="@+id/Button11"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:src="@drawable/button11"
             android:scaleType="center"
             android:gravity="bottom"
             android:background="@drawable/background11"
             />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="bottom"
            android:orientation="vertical" >

           <SeekBar
                    android:id="@+id/SeekBar1"
                    style="@style/MySeekBar1"
                    android:layout_width="60dp"  
                    android:layout_height="35dp"
                    android:layout_marginBottom="20dp"
                />

            <TextView
                    android:id="@+id/MyText"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="bottom"
                    android:background="@drawable/MyTextImg"
                />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

【问题讨论】:

    标签: android user-interface vertical-alignment alignment


    【解决方案1】:

    试试下面的代码:

    <?xml version="1.0" encoding="utf-8"?>
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="*">
    
    <TableRow >
        <TextView />
    
        <Button 
            android:id="@+id/button2" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="Button2-1" />
    </TableRow>
    
    <TableRow >
        <Button 
            android:id="@+id/button1" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="Button1" />
    
        <Button 
            android:id="@+id/button2" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="Button2-2" />
    
    </TableRow>
    
    </TableLayout>
    

    诀窍是在第一行的空白处使用空白文本视图。让我知道这是否对您有帮助。 :)

    【讨论】:

      【解决方案2】:

      正如有人建议的那样,使用RelativeLayout 来设计这种类型的模式!这是您的情况的示例:

      <?xml version="1.0" encoding="utf-8"?>
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/ButtonGroups"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="vertical" >
      
              <Button
                  android:id="@+id/Button2-2"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_alignBaseline="@+id/Button1"
                  android:layout_alignBottom="@+id/Button1"
                  android:layout_toRightOf="@+id/Button1"
                  android:text="button 2-2" />
      
              <Button
                  android:id="@+id/Button2-1"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_above="@+id/Button2-2"
                  android:layout_alignLeft="@+id/Button2-2"
                  android:text="button 2-1" />
      
              <Button
                  android:id="@+id/Button1"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_alignParentLeft="true"
                  android:layout_alignParentTop="true"
                  android:layout_marginTop="54dp"
                  android:text="button 1" />
      </RelativeLayout>
      

      我希望这能让你开始!

      【讨论】:

      • 实际上还有其他视图也应该与 button1 水平对齐并位于按钮 1 的左侧(请参阅我第一篇文章中的“其他视图”),所以我可能需要嵌套布局?
      【解决方案3】:

      尝试将第一个按钮(按钮 1)的重力属性更改为底部。

      【讨论】:

      • 谢谢!将重力更改为底部会对齐按钮,但由于我实际上需要 ImageButtons(抱歉,我没有发布原始代码只是为了简单起见),如果图像无法居中对齐,它看起来会很奇怪。
      【解决方案4】:

      【讨论】:

      • 哪一个应该换成相对布局?
      • 所有这些。只需阅读指南(第二个链接)。第一页有一个例子。
      猜你喜欢
      • 2014-12-05
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 2019-06-05
      • 2018-06-23
      相关资源
      最近更新 更多