2011-06-16 88 views
1

我有两个textviews。我希望其中一个左对齐,另一个右对齐。非常像它看起来像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> 

回答

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的重量,所以它会吃掉所有的额外空间。设置2nd oen来包装内容,所以它只占用尽可能多的空间。

但是为什么你在他们周围有一个额外的LinearLayout?如果你嵌套了LinearLayout,你应该使用RelativeLayout来代替。

1

使用相对布局。关于相对布局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的

好处:它减少了布局的数量。这也会优化你的用户界面。

1

 <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> 
1

我不能完全确定要完全相同的布局,但你可以试试这个:

<?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而非gravity也。 layout_gravity告诉家长如何布置,gravity告诉内容如何布置。

请注意,我如何在父布局中将weightSum设置为2,然后将两个孩子设置为各自的权重1。我还设置了家长fill_parent

你必须和额外的布局有太多 - 如果你想间距,设置保证金在第二的TextView或使用视图(一个比一个的LinearLayout简单对象)