24

更新ボタンの代わりに進行状況インジケーター (requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS) を使用して表示されるもの) を表示することは可能ですか?

アイデアは、Gmail クライアントが行うように動作することです: ロードしていないときは更新ボタンを表示し、ロードしているときは更新ボタンの代わりに不確定なスピナーを表示します。

4

2 に答える 2

53

はい、この方法で簡単にできます。

private MenuItem refresh;
.
.
.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.options_menu, menu);

    // refresh menu item
    refresh = menu.findItem(R.id.refresh_option_item);

    return super.onCreateOptionsMenu(menu);
}

上記のように更新メニュー項目を取得する必要があります。次に、以下のように回転項目を有効にできます。

refresh.setActionView(R.layout.actionbar_indeterminate_progress);

タスクが完了したら、以下のようにスピンを無効にできます。

refresh.setActionView(null);

最後に、actionbar_indeterminate_progress.xmlは次のようになります。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="64dp"
    android:layout_height="wrap_content"
    android:gravity="center">
    <ProgressBar android:layout_width="32dp"
        android:layout_height="32dp"
        android:layout_gravity="center"
        style="?android:attr/indeterminateProgressStyle" />
</FrameLayout>
于 2012-09-03T21:24:02.610 に答える
0

次のことを試すことができます: 更新ボタンと不確定スピナーの両方を の中に入れて FrameLayout、2 つが z 平面に積み上げられ、画面上の同じ位置に表示されるようにします。次に、可視性をいじる必要があります。更新ボタンを表示するには、スピナーを非表示に、ボタンを表示に設定します。スピナーを表示する場合は、スピナーを表示に設定し、ボタンを非表示に設定します。

于 2012-08-05T14:49:58.683 に答える