【问题标题】:How can I align this layout correctly?如何正确对齐此布局?
【发布时间】:2011-09-16 15:07:14
【问题描述】:

我有两个文本视图。我希望其中一个左对齐,另一个右对齐。几乎使它看起来像一个 2 列的表。

<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/profileLayout" android:orientation="vertical">
        <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:id="@+id/experience" android:orientation="horizontal">
            <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/experienceLabel" android:textStyle="bold" android:layout_weight="0" android:text="Experience"></TextView>
            <LinearLayout android:id="@+id/linearLayout4" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1"></LinearLayout>
            <TextView android:text="TextView" android:layout_height="wrap_content" android:id="@+id/experienceTextView" android:layout_gravity="right" android:layout_weight="0" android:layout_width="wrap_content"></TextView>
        </LinearLayout>
    </LinearLayout>

【问题讨论】:

    标签: java android layout textview android-linearlayout


    【解决方案1】:
    <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal">
        <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_weight="1"/>    
        <TextView android:layout_height="wrap_content" android:layout_weight="0" android:layout_width="wrap_content"/>
    </LinearLayout>
    

    将第一个的权重设置为 1,这样它就会占用所有额外的空间。将第二个 oen 设置为包装内容,因此它只占用所需的空间。

    但是为什么你在它们周围有一个额外的 LinearLayout 呢?如果你有嵌套的 LinearLayouts,你可能应该使用 RelativeLayout。

    【讨论】:

      【解决方案2】:

              <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/experienceLabel" android:textStyle="bold" android:layout_weight="1" android:text="Experience"></TextView>
      
              <TextView android:text="TextView" android:layout_height="wrap_content" android:id="@+id/experienceTextView"  android:layout_weight="1" android:layout_width="wrap_content"></TextView>
      
      </LinearLayout>
      

      【讨论】:

        【解决方案3】:

        使用相对布局。关于相对布局LinkExample link

        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" 
        android:layout_height="wrap_content">
        <TextView android:layout_height="wrap_content"
            android:layout_width="wrap_content" android:id="@+id/experienceLabel"
            android:textStyle="bold" android:layout_weight="0" android:text="Experience"
            android:layout_alignParentLeft="true"/>
        <TextView android:text="TextView" android:layout_height="wrap_content"
            android:id="@+id/experienceTextView" android:layout_gravity="right"
            android:layout_weight="0" android:layout_width="wrap_content"
            android:layout_alignParentRight="true" />
        

        使用RelativeLayout 的好处:它减少了您的布局数量。这也将优化您的用户界面。

        【讨论】:

          【解决方案4】:

          我不完全确定你想要的确切布局,但你可以试试这个:

          <?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="wrap_content"
              android:id="@+id/profileLayout"
              android:orientation="vertical">
              <LinearLayout
                  android:layout_width="fill_parent"
                  android:layout_height="match_parent"
                  android:weightSum="2"
                  android:id="@+id/experience"
                  android:orientation="horizontal">
                  <TextView
                      android:layout_height="wrap_content"
                      android:layout_width="wrap_content"
                      android:id="@+id/experienceLabel"
                      android:textStyle="bold"
                      android:layout_weight="1"
                      android:text="Experience"/>
          
                  <TextView
                      android:text="TextView"
                      android:layout_height="wrap_content"
                      android:id="@+id/experienceTextView"
                      android:gravity="right"
                      android:layout_weight="1"
                      android:layout_width="wrap_content"/>
              </LinearLayout>
          </LinearLayout>
          

          您也使用了layout_gravity 而不是gravitylayout_gravity 告诉父母你想如何布局,gravity 告诉内容如何布局。

          注意我如何在父布局中将weightSum 设置为 2,然后将两个子级的权重设置为 1。我还将父级设置为fill_parent

          你也有额外的布局 - 如果你想要间距,在第二个文本视图上设置边距或使用视图(比线性布局更简单的对象)

          【讨论】:

            猜你喜欢
            • 2014-08-08
            • 1970-01-01
            • 1970-01-01
            • 2019-06-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多