centerHorizo​​ntal不会正确居中图像

时间:2011-08-11 13:13:37

标签: android relativelayout

这是XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:background="@drawable/bg"
        >
    <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="4"
            android:orientation="vertical"
            >
        <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="center_horizontal" //CENTER 01
                >
            <!--center button-->
            <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/img"
                    android:layout_centerVertical="true"
                    android:layout_centerHorizontal="true" //CENTER 02
                    />
        //...            
        </RelativeLayout>        
    </LinearLayout>
    <include android:id="@+id/banner" layout="@layout/banner"
             android:layout_weight="1"
             android:layout_gravity="bottom"/>
</LinearLayout>

中央按钮居中,但不在屏幕的真实中心,而是在中心右侧约50px。如果我删除centerHorizontal CENTER01,那么这不会发生。

有谁知道为什么会这样?

4 个答案:

答案 0 :(得分:3)

请尝试//CENTER 02

android:layout_centerInParent="true"

答案 1 :(得分:1)

此问题可能是由于在xml文件中使用了相对布局和线性布局。

将所有线性布局更改为 相对布局 ,以便图像视图按预期居中。

我在单一XML中混合了线性布局和相对布局,并且面临着这种问题。一旦我将所有线性布局替换为相对布局,我的问题就解决了。

试试吧。谢谢.Venky

答案 2 :(得分:1)

在父级上设置android:gravity="center_horizontal"时,会影响其子级的行为。因此,您的ImageView会受到影响,创建您在其他属性放置在中心后看到的效果。

您可以通过TextViewandroid:layout_width="fill_parent"放置{{1}}来为自己看到此效果。

答案 3 :(得分:1)

因为在相对布局中,center_horizo​​ntal不是命令。适用于包含在线性布局中的视图。对于RelativeLayout,您需要使用

android:layout_centerInParent="true";

作为线性

中的中心重力命令

 android:layout_centerHorizontal="true" 

作为线性的重心center_horizo​​ntal。