2

ProgressBarボタンを押したときにアプリケーションに表示したい。

問題は、ダイアログ内にスピナーが必要ないため、ProgressDialogを使用したくないことです。スピナーのみを表示したいので、 ProgressBarを表示したいだけです。

私はこれをプログラム的に行いたいと思っています。

4

4 に答える 4

3

これをレイアウトに追加します。

<ProgressBar android:id="@+id/progressBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="invisible"></ProgressBar>

そして、あなたのJavaコードでは、アクティビティで以下のコードを使用し、要件に従ってそれに応じて変更します

ProgressBar viewProgressBar;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test);

    viewProgressBar = (ProgressBar)findViewById(R.id.progressBar1);

    Button btn1 = (Button) findViewById(R.id.button1);
    btn1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            viewProgressBar.setVisibility(View.VISIBLE);


                    // Your code follows here

        }

    });
}

非表示にしたい場合は、単に使用します

viewProgressBar.setVisibility(View.INVISIBLE);
于 2012-10-03T10:35:04.683 に答える
1

これを実現するには、アクティビティ用に2 つの重複するコンテナーを作成する必要があります。1 つのコンテナにはアクティビティのビューが含まれ、デフォルトで表示されます。2 つ目のコンテナには、背景が透明なスピナーが中央に含まれ、デフォルトで表示されなくなります。
このような重なり効果を作成するには、両方のコンテナーを FrameLayout 内に配置する必要があります。
注: ここでのコンテナーとは、LinearLayout、RelativeLayout などの ViewGroups を意味します。

<FrameLayout>
    <LinearLayout
        android:id="@+id/viewsContainer"
        android:visibility="visible">
    ...
    ...
    </LinearLayout>

    <LinearLayout
        android:id="@+id/spinnerContainer" 
        android:visibility="gone"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#00000000">
        <ProgressBar
            android:id="@+id/progressBar1"
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
</FrameLayout>

これが役立つことを願っています。お気軽にご相談ください。

于 2012-10-03T11:32:54.460 に答える
1

Spinner をレイアウトに配置して、次の属性を与えることができます。

android:visibility="gone"

また

android:visibility="invisible"

ボタンをクリックすると、 View.setVisibility() で可視性を可視に変更ます。アクションが完了したら、再び非表示にします。

于 2012-10-03T09:56:07.000 に答える
0

必要な場合は、ProgressDialog を使用する代わりに、ProgressBarビューを使用する必要があります。

できることは、ProgressBar が既に配置されている状態でアクティビティ/フラグメントのレイアウトを宣言し、それを非表示 (View.GONE) にすることです。次に、コードでボタンをクリックすると、可視性が可視 (View.VISIBLE) に変わります。

ProgressBar をプログラムで宣言することもできます。これにより、XML レイアウトを使用した場合と同じ効果が得られます。

于 2012-10-03T09:58:47.477 に答える