如何正确对齐此布局?

时间:2011-06-16 18:23:30

标签: java android layout textview android-linearlayout

我有两个短信。我希望其中一个左对齐,另一个右对齐。几乎就是它看起来像一个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>

4 个答案:

答案 0 :(得分:1)

使用相对布局。关于相对布局Link Example 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的好处:它减少了布局数量。这也将优化你的ui。

答案 1 :(得分: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>

答案 2 :(得分: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。

答案 3 :(得分: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而不是gravitylayout_gravity告诉家长您希望如何布局,gravity告诉内容如何布局。

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

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