Как правильно выровнять этот макет? - PullRequest
1 голос
/ 16 июня 2011

У меня есть два просмотра текста. Я хочу, чтобы один из них был выровнен по левому краю, а другой - по правому краю. Почти так, что это выглядит как таблица из 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 ]

1 голос
/ 16 июня 2011

Я не совсем уверен, какой именно макет вы хотите, но вы можете попробовать это:

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

У вас также был дополнительный макет - если вы хотите использовать интервал, установите поле для второго текстового представления или используйте представление (более простой объект, чем LinearLayout)

1 голос
/ 16 июня 2011

        <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 голос
/ 16 июня 2011
<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, чтобы он съел все лишнее пространство. Установите значение 2-й oen для переноса содержимого, чтобы оно занимало столько места, сколько ему нужно.

Но почему у вас есть дополнительная LinearLayout вокруг них? Если у вас есть вложенные LinearLayouts, вы, вероятно, должны использовать вместо него RelativeLayout.

1 голос
/ 16 июня 2011

Использовать относительный макет. Об относительной компоновке Ссылка Пример ссылки

<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: сокращает количество макетов. Что тоже оптимизирует ваш пользовательский интерфейс.

...