centerHorizontally не центрирует изображение правильно - PullRequest
0 голосов
/ 11 августа 2011

Вот 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>

Центральная кнопка расположена по центру, но не в реальном центре экрана, а примерно в 50 пикселях справа от центра.Если я удалю centerHorizontal CENTER01, то этого не произойдет.

Кто-нибудь знает, почему это происходит?

Ответы [ 4 ]

3 голосов
/ 11 августа 2011

Пожалуйста, попробуйте для //CENTER 02:

android:layout_centerInParent="true"
1 голос
/ 11 августа 2011

Это потому, что в относительном расположении center_horizontal не является командой.это работает для представлений, обернутых в линейное расположение.для RelativeLayout вы должны использовать

android:layout_centerInParent="true";

в качестве команды центра тяжести в линейном

или

 android:layout_centerHorizontal="true" 

в качестве гравитационного центра_горизонтального в линейном.

1 голос
/ 11 августа 2011

Когда вы устанавливаете android:gravity="center_horizontal" для родителя, это влияет на поведение его потомков. Следовательно, ваш ImageView получает эффект, создавая эффект, который вы видите, уже будучи помещенным в центр другими свойствами.

Вы можете увидеть этот эффект для себя, поместив туда TextView с android:layout_width="fill_parent".

1 голос
/ 11 августа 2011

Эта проблема может быть связана с использованием как относительного макета, так и линейного макета внутри XML-файла.

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

Я тоже смешал Linear Layout и Relative Layout в одном XML и столкнулся с такой проблемой. Как только я заменил все линейные макеты на относительные, моя проблема решена.

Попробуй. Спасибо. Венки

...