Android LinearLayout Alignment - PullRequest
       1

Android LinearLayout Alignment

3 голосов
/ 12 января 2012

Будучи новичком в Android, я все еще изучаю тонкости макетов.Я пытаюсь создать простую панель поверх карты.По большей части это работает нормально.

Моя проблема в том, что я хочу, чтобы все было выровнено по правому краю, кроме кнопки, которую я хочу выровнять по левому краю.Я попробовал довольно много комбинаций и не могу получить желаемый макет.

Это начинает заставлять меня верить, что моя структура в целом неверна.Кажется, что это должно быть легко исправить.Что мне не хватает ??

   <LinearLayout
        android:id="@+id/transparent_panel_hud"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="right">  
        <Button
            android:text="View"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableRight="@drawable/arrow_down"
            android:textSize="10sp"
            android:drawablePadding="3dp"/>

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:paddingRight="15dp" >

            <TextView
                android:id="@+id/latitude"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:gravity="right"
                android:text="@string/default_latitude"
                android:textSize="18sp" />

            <TextView
                android:id="@+id/longitude"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="right"
                android:text="@string/default_longitude"
                android:textSize="18sp" />
        </LinearLayout>

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:paddingRight="10dp" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="@string/speed"
                android:textSize="18sp" />

            <TextView
                android:id="@+id/speed"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="@string/default_speed"
                android:textSize="18sp" />
        </LinearLayout>

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:paddingRight="10dp" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="@string/heading"
                android:textSize="18sp" />

            <TextView
                android:id="@+id/heading"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="@string/default_heading"
                android:textSize="18sp" />
        </LinearLayout>
    </LinearLayout>![screenie][1]

Ответы [ 2 ]

7 голосов
/ 12 января 2012

Внесите следующие изменения в свой макет XML, вы получите результат, как вы упомянули. Попробуйте это.

Удалить строку android:gravity="right" in LinearLayout с помощью id=transparent_panel_hud

Держите Button в LinearLayout, как показано ниже.

      <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="left" >
            <Button ... as you like />
      </LinearLayout>

Держите оставшиеся 3 по вертикали LinearLayouts в LinearLayout, как показано ниже.

      <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="right" >
            <LinearLayout vertical 1 ... as you like />
            <LinearLayout vertical 2 ... as you like />
            <LinearLayout vertical 3 ... as you like />
      </LinearLayout>

Я проверял выше изменения в вашем коде, он работает. Вы тоже проверьте это и дайте мне знать результат.

1 голос
/ 12 января 2012

Попробуйте это

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/transparent_panel_hud"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">  
    <Button
        android:text="View"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10sp"
        android:layout_alignParentLeft="true"
        android:drawablePadding="3dp"/>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:id="@+id/rightlayout"
        android:layout_alignParentRight="true"
        android:paddingRight="10dp" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="heading"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/heading"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="default_heading"
            android:textSize="18sp" />
    </LinearLayout>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_toLeftOf="@id/rightlayout"
        android:orientation="vertical"
        android:paddingRight="10dp" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="speed"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/speed"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="default_speed"
            android:textSize="18sp" />
    </LinearLayout>
</RelativeLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...