更新ボタンの代わりに進行状況インジケーター (requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS) を使用して表示されるもの) を表示することは可能ですか?
アイデアは、Gmail クライアントが行うように動作することです: ロードしていないときは更新ボタンを表示し、ロードしているときは更新ボタンの代わりに不確定なスピナーを表示します。
更新ボタンの代わりに進行状況インジケーター (requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS) を使用して表示されるもの) を表示することは可能ですか?
アイデアは、Gmail クライアントが行うように動作することです: ロードしていないときは更新ボタンを表示し、ロードしているときは更新ボタンの代わりに不確定なスピナーを表示します。
はい、この方法で簡単にできます。
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>
次のことを試すことができます: 更新ボタンと不確定スピナーの両方を の中に入れて FrameLayout
、2 つが z 平面に積み上げられ、画面上の同じ位置に表示されるようにします。次に、可視性をいじる必要があります。更新ボタンを表示するには、スピナーを非表示に、ボタンを表示に設定します。スピナーを表示する場合は、スピナーを表示に設定し、ボタンを非表示に設定します。