18

ユーザーが「更新」を押すたびに、更新アイコンがタスクが完了するまで一時的に不確定な進行状況バーに変わるように、ハニカムアクションバーに不確定な進行状況バーを追加したいと思います。メールアプリはすでにこれを行っていますが、方法がわかりません。

何かアドバイス?

4

6 に答える 6

19

Jon Oの答えを明確にするために重要なのは、更新アクションのアクションビューを設定および設定解除することです。これは、ActionBarSherlockとネイティブ4.xアクションバーの両方で機能します。次のスニペットは、更新メニュー項目のIDが「refresh_option」で、置換レイアウト(ProgressBarがある)がレイアウト「progress_wheel」にあると仮定して、更新アイコンの上に進行状況が不確定なビューを表示します。

 MenuItem item = abmenu.findItem(R.id.refresh_option);
 LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 View abprogress = inflater.inflate(R.layout.progress_wheel, null);
 item.setActionView(abprogress);

進行状況ビューの設定を解除すると、更新アイコンが表示に戻ります。

 item.setActionView(null);

githubのより詳細な例を参照してください。

于 2012-11-11T08:07:44.297 に答える
5

larham1 の答えを単純化するには: アクション レイアウトの ID を受け入れるメソッドMenuItemがあるため、新しいアクション ビュー自体を膨らませる必要さえないので、次のように簡単に書くことができます。

item.setActionView(R.layout.progress_bar);
于 2014-07-31T11:16:45.337 に答える
5

メール アプリがどのように動作するかを正確に説明するのは難しいですが、 XML ファイルの ID を指定してsetIconを呼び出し、Timer を使用して状態を変更するだけのシンプルな方法をお勧めします。StateDrawable

于 2011-08-22T03:45:18.970 に答える
3

元の問題で提供されているコードを使用しています: https://github.com/JakeWharton/ActionBarSherlock/issues/425

android:layout_widthand android:layout_height(actionbar_indeterminate_progress.xml 内) を除いて、私は32dp;を使用します。これは ActionBarCompat で行われた方法であったため: http://developer.android.com/resources/samples/ActionBarCompat/res/layout-v11/actionbar_indeterminate_progress.html

于 2012-06-07T23:13:48.730 に答える