Android: layout_gravity поместит дочерний вид в центр по вертикали, но не по горизонтали - PullRequest
1 голос
/ 07 сентября 2011

XML макета:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@color/translucenter_dark" >
    <LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="200dip"
    >
    <ProgressBar android:id="@+id/progressBar1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center"

    ></ProgressBar>
    </LinearLayout>

</LinearLayout>

И окончательный макет:

enter image description here

Почему индикатор выполнения не был помещен в центр как вертикально, так и горизонтально. Это особенность или ошибка:)

1 Ответ

6 голосов
/ 07 сентября 2011

Вы можете задать линейный макет, включающий индикатор выполнения android:gravity="center". Это сделает индикатор выполнения центрированным.

Кажется, что индикатор выполнения использует ViewGroup.LayoutParams . Этот класс не поддерживает layout_gravity, например LinearLayout.LayoutParams . Поэтому вам потребуется использовать свойство gravity родительского линейного макета. Это довольно хорошее объяснение гравитации в Android.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...