Линейный макет Android выровнять по центру и правому краю - PullRequest
9 голосов
/ 06 октября 2011

Вот что у меня есть:

enter image description here

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:background="#FFFFFF">
    <LinearLayout android:id="@+id/LinearLayout01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:background="#E30000"
        android:layout_gravity="center_horizontal|center_vertical"
        android:gravity="center_horizontal|center_vertical">
        <TextView 
            android:id="@+id/TextView00"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FFFFFF"
            android:textSize="20px"
            android:textStyle="bold"
            android:text="Something"
            android:gravity="right|center_vertical"
            />
        <LinearLayout android:id="@+id/LinearLayout01"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="horizontal"
            android:gravity="right|center_vertical"
            android:layout_gravity="center_vertical"
            android:background="#E30000">
            <Button 
                android:id="@+id/btnCalls"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:drawableLeft="@drawable/icon"
                android:gravity="right|center_vertical"
            />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

И я хочу это:

enter image description here

Таким образом, горизонтальный центр выравнивает текст, а вертикальный центр выравнивает кнопку.

Чего мне не хватает? Я не пробовал RelativeLayout, и я бы предпочел, чтобы LinearLayout решил эту проблему.

Ответы [ 9 ]

27 голосов
/ 06 октября 2011
android:gravity="right|center_vertical"

выравнивает ваш TextView вправо.Как насчет center_horizontal?

И ваши LinearLayouts имеют одинаковый идентификатор, если кода больше нет, я бы удалил один из них.

10 голосов
/ 06 октября 2011

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:background="#FFFFFF">
    <LinearLayout android:id="@+id/LinearLayout01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:background="#E30000"
        android:layout_gravity="center_horizontal|center_vertical" 
        android:gravity="center_vertical">
        <TextView 
            android:id="@+id/TextView00"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FFFFFF"
            android:textSize="20px"
            android:textStyle="bold"
            android:text="Something"
            android:layout_weight="1" 
            android:gravity="center"/>
        <LinearLayout android:id="@+id/LinearLayout01"
            android:layout_height="wrap_content"
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="horizontal"
            android:gravity="right|center_vertical"
            android:layout_gravity="center_vertical"
            android:background="#E30000"                
            android:layout_width="wrap_content">
            <Button 
                android:id="@+id/btnCalls"
                android:layout_width="wrap_content"
                android:drawableLeft="@drawable/icon"
                android:gravity="right|center_vertical" 
                android:layout_height="wrap_content" 
                android:layout_margin="5dip"/>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>
2 голосов
/ 04 августа 2015

Я обнаружил, что ни один из ответов не работает точно так, как предполагал OP, но решение RelativeLayout было самым близким. За исключением того, что TextView не был в центре. Но с layout_centerInParent = true работает как шарм:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView 
         android:id="@+id/TextView00"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:textColor="#FFFFFF"
         android:textSize="20px"
         android:textStyle="bold"
         android:text="Something"
         android:layout_centerInParent="true" />

    <Button 
         android:id="@+id/btnCalls"
         android:drawableLeft="@drawable/icon"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentRight="true"/>
</RelativeLayout>
1 голос
/ 04 февраля 2013

Попробуйте добавить пустой View внутри горизонтального LinearLayout между элементом, который вы хотите видеть слева, и элементом, который хотите видеть справа, например:

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <View
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="1"
            />                

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>
0 голосов
/ 10 января 2018

Решение для этого - android: gravity = "center_vertical"

Обычно вам также нужно позаботиться о положении его родителя, чтобы убедиться, что он работает.

0 голосов
/ 15 июля 2015

Просто используйте RelativeLayout и wallaaa !!!

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView 
         android:id="@+id/TextView00"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:textColor="#FFFFFF"
         android:textSize="20px"
         android:textStyle="bold"
         android:text="Something"
         android:gravity="center" />

    <Button 
         android:id="@+id/btnCalls"
         android:drawableLeft="@drawable/icon"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentRight="true"/>
</RelativeLayout>
0 голосов
/ 06 октября 2011

определить вес макета для TextView и LinearLayout

установить android:layout_weight="1" на TextView

установить android:layout_weight="0" на LinearLayout

, а также измените layout_width="wrap_content" на LinearLayout и установите layout_gravity="center" на TextView

0 голосов
/ 06 октября 2011

Я думаю, что гравитация означает положение вещей внутри компонента (для textview это означает, что вы дали текст) в компоненте, где layout_gravity означает положение самого компонента во всем макете.* Попробуйте использовать:

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout android:id="@+id/LinearLayout01"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:background="#FFFFFF"
        >
        <LinearLayout android:id="@+id/LinearLayout01"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="horizontal"
            android:background="#E30000"
            android:layout_gravity="right"
            android:gravity="center_vertical|right"                    
            >
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|center_vertical"
                    android:gravity="center_vertical|center" 
                    android:layout_weight="0.9"
                >
                    <TextView 
                        android:id="@+id/TextView00"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="#FFFFFF"
                        android:textSize="20px"
                        android:textStyle="bold"
                        android:text="Something"
                        android:gravity="center_horizontal"
                        android:layout_gravity="center_horizontal|center_vertical" 

                    />
                </LinearLayout>
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|center_vertical"
                    android:gravity="center_vertical|right"                    
                    android:paddingTop="5dip"
                    android:layout_weight="0.1"
                >
                    <Button 
                        android:id="@+id/btnCalls"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:drawableLeft="@drawable/icon"
                        android:layout_gravity="center_vertical"
                        android:gravity="center"                                    
                    />
                </LinearLayout>
        </LinearLayout>
    </LinearLayout>
0 голосов
/ 06 октября 2011

вы использовали android:gravity="right|center_vertical" в вашем текстовом просмотре.Используйте android:gravity="center".

...