Android线性布局对齐中心和右侧

时间:2011-10-06 07:22:38

标签: android layout android-linearlayout center

这就是我所拥有的:

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来解决这个问题。

8 个答案:

答案 0 :(得分:27)

android:gravity="right|center_vertical"

将TextView对齐。 center_horizo​​ntal怎么样?

你的LinearLayouts具有相同的ID,如果没有更多的代码,那么我会删除其中一个。

答案 1 :(得分:10)

尝试这个

<?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 :(得分:2)

我发现没有一个答案与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>

答案 3 :(得分:1)

尝试在想要看到左边的元素和你想要看到的元素之间的水平LinearLayout中添加空View,例如:

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

答案 4 :(得分:0)

您在textview中使用了android:gravity="right|center_vertical"。使用android:gravity="center"

答案 5 :(得分:0)

我认为,引力意味着组件内部事物的位置(对于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>

答案 6 :(得分:0)

定义TextViewLinearLayout

的布局权重

android:layout_weight="1"设为TextView

android:layout_weight="0"设为LinearLayout

并将layout_width="wrap_content"更改为LinearLayout 并将layout_gravity="center"设置为TextView

答案 7 :(得分:0)

解决方法是 - 机器人:比重=&#34; center_vertical&#34;

通常,你也必须照顾其父母的职位,以确保其有效。