web-dev-qa-db-ja.com

設定方法Android画面中央のプログレスバー

画面の中央にプログレスバーを表示しようとしていますが、中央に表示されません。以下は私のレイアウトです。ここで何が悪いのですか?基本的に、これは画像とAndroid=ギャラリーウィジェットを上に表示するレイアウトです。ユーザーがサムネイルをクリックすると、Webから画像が読み込まれ、進行中にダイアログが表示されます画像を読み込んでいます。

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:ads="http://schemas.Android.com/apk/lib/com.google.ads"
    Android:id="@+id/container" Android:layout_width="fill_parent"
    Android:layout_height="fill_parent" Android:orientation="vertical">

    <Gallery Android:id="@+id/gallery" Android:layout_width="fill_parent"
        Android:layout_height="wrap_content" Android:gravity="top" />

    <ImageView Android:id="@+id/actualimage" Android:scaleType="fitCenter"
        Android:layout_width="fill_parent" Android:layout_height="wrap_content"
        Android:visibility="gone" Android:layout_gravity="center_vertical|center_horizontal|center"
        Android:adjustViewBounds="true" />

    <ProgressBar Android:id="@+Android:id/progress_small1"
        Android:layout_height="wrap_content" Android:layout_width="wrap_content"
        Android:visibility="visible" Android:layout_gravity="center_vertical|center_horizontal"
        Android:gravity="center_vertical|center_horizontal" />

</LinearLayout>
15
Chandu

LinearLayoutを使用すると、ビューが垂直に積み重ねられます。現在、あなたのImageViewProgressBarが中心の位置を争っています。このような状況では、RelativeLayoutをお勧めします。

RelativeLayoutでは、Android:layout_centerInParent="true"を使用します。

39
Paul Burke

ルートLinearLayoutAndroid:gravity="center"を実行します。 ProgressBarを表示する場合は、gone以外のすべての要素のAndroid:visibilityProgressBarに設定します

4
500865

ギャラリーに画像が読み込まれるまで、進行状況インジケーターを表示しようとしていると思うので、おそらく進行状況ダイアログに移動する必要があります。

これはあなたを始めるでしょう。

http://www.helloandroid.com/tutorials/using-threads-and-progressdialog

http://www.androidpeople.com/Android-progress-dialog-example

それでも、プログレスバー自体を利用する方法を探している場合は、Bradley Uffnerが提供する答えを試してみてください。

3
Andro Selva

以下を追加:

Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true"
3
Taner

進行状況バーに1のlayout_weightを指定してみてください

2
Bradley Uffner

私はこの質問が答えられていることを知っていますが、ビュー/サブビューのレイアウトのパフォーマンスを考慮すると、RelativeLayoutは高価です(2つのパスが必要です)。ビューの階層が複雑な場合は、相対レイアウトを使用するか、ビューに以下のような単純なビューしかない場合は、線形レイアウト/フレームレイアウトを使用してください。

私の経験から、アプリが成長したとき、相対レイアウトでのUIパフォーマンスはより悪くなり、すべてのレイアウトファイルで再作業することになりました:(以下は、ビュー(私の場合はProgressView)をビューの中心に置くためのサンプルです。

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" Android:orientation="vertical">
    <Android.support.v7.widget.AppCompatImageView Android:layout_gravity="center"  Android:layout_width="match_parent"
        Android:layout_height="0dp" app:srcCompat="@drawable/check" Android:scaleType="fitCenter"
        Android:layout_weight=".7"/>
    <FrameLayout
        Android:layout_width="match_parent"
        Android:layout_height="0dp" Android:layout_weight=".3">
        <ProgressBar Android:layout_gravity="center|center_horizontal" Android:indeterminateTint="@color/textColorPrimary"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content" Android:indeterminate="true"/>
    </FrameLayout>

</LinearLayout>
1
Itzdsp