Как установить ProgressBar на центральном экране в рамке?

Я использую следующий код, но мой индикатор выполнения не отображается в центре макета кадра. Я хочу, чтобы не дополнить свой прогресс. Может кто-нибудь объяснить? Он отлично работает, если я использую "Linear Layout"

<?xml version="1.0" encoding="UTF-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_vertical|center_horizontal">

    <ProgressBar android:id="@+id/progress_bar"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" />

    <ImageView android:id="@+id/gallery_img"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" />

 </FrameLayout>

Ответы

Ответ 1

В макете xml для вашего progressBar установите android:layout_gravity (вместо android:gravity) на "center"

android:layout_gravity = "center"

Ответ 2

Используйте

android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_centerInParent="true"

Пример:

 <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content"
     android:layout_centerHorizontal="true"
     android:layout_centerVertical="true"
     android:layout_centerInParent="true" />

android:gravity атрибут не поддерживается на ProgressBar

Ответ 3

FrameLayout не имеет android:gravity. Вам нужно установить android:layout_gravity на ProgressBar.

Ответ 4

<ProgressBar
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        ***android:layout_gravity="center"*** /> 

добавьте эту строку в

 <ProgressBar
              android:layout_gravity="center" />

Ответ 5

Просто измените свой макет как RelativeLayout и добавьте android: layout_centerInParent = "true" к вашему ProgressBar.

<ProgressBar
android:id="@+id/progBar"
android:indeterminateDrawable="@drawable/my_progress_indeterminate"
android:layout_height="50dp" 
android:layout_centerInParent="true"
android:layout_width="50dp">
</ProgressBar>

Ответ 6

Рабочее решение с 2017 года

android:layout_gravity="center"

Ответ 7

Начиная с 2018 года вам нужно установить атрибут ниже:

android:layout_centerInParent="true"

Ответ 8

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