ActionBarにprogressBarを配置する

私は、不確定なProgressBarをactionBarに配置しようとしています。私はactionViewを使ってprogressBarを例えばGoogle+アプリのように置いていました。



問題は進行状況バーがアイテムと見なされるため、Nexus Sポートレートモードではアクションバーに他のアイテムが1つしかありませんが、Google+では2つのアイテムとprogressBarが表示されます。 どのようにアンドロイドのアクションバーを使ってプログレスバーを置くことが可能ですか?

51
guides.codepath.com/android/Handling-ProgressBars ではこれについて非常にうまく説明しています
追加された 著者 png,

3 答え

注:下の機能は現在サポートライブラリで廃止されました。

あなたは電話する必要があります

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)

あなたの onCreate() アクティビティのレイアウトを設定する前に

例えば

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    ...//set layout etc

If you are using the support library replace requestWindowFeature with supportRequestWindowFeature

そして、

setProgressBarIndeterminateVisibility(true);

進行状況のスピナーを表示したいときはいつでも、あなたのアクティビティに表示されます。

166
追加された
そして、完了したら getActivity()をfalseに設定します。setSupportProgressBarIndeterminateVisibility(t‌ rue);
追加された 著者 ymerdrengene,
私はこれを試しましたが、問題はプログレスバーが大きく表示され、それを小さくしたいということです。私は @ android:style/Widget.ProgressBar。‌ Small をスタイルとして挿入しようとしましたが、うまくいきませんでした!私がそれを働かせたら、これは完璧な解決策になるだろう
追加された 著者 Matroska,
私は進捗バーにスタイルを入れました。 stackoverflow.com/questions/9162481/… とそれはうまく動作:)
追加された 著者 Matroska,
その提案で私はバーに1つのスペースを消費します。 FEATURE_INDETERMINATE_PROGRESSを使用してカスタムのプログレスバー(ちょうど異なるサイズ)を配置できない理由を理解したい
追加された 著者 Matroska,
上記のコメントを修正するには、 requestWindowFeature(Window ... supportRequestWindowFeature(Window ... )に変更して、少なくとも。
追加された 著者 Kling Klang,
サポートされている方法があなたが望むものでない場合は、このような方法を自分で実装する必要があります。>> stackoverflow.com/questions/6857364/…
追加された 著者 Kuffs,
@ジョージ。それは間違っている。 setContentView()の前に呼び出す必要がありますが、 onCreate()へのスーパーコールの後に呼び出すことができます。私の答えには両方の点が描かれていました。 developer.android.com/reference/android/view/&hellip ;
追加された 著者 Kuffs,
それを示す文書へのリンクを投稿してください。
追加された 著者 Kuffs,
適切なサイズとパディングを持つプログレスバーが必要な場合は、私の解決策をここで確認してください。 stackoverflow.com/questions/15519818/…
追加された 著者 petrnohejl,
ActionBarActivity サポートを反映するように答えを更新しました。
追加された 著者 gunar,
progressBarのスタイルを小さく設定することは可能ですか?
追加された 著者 Muhammad Babar,
どのようにAPIレベル21でこのサポートを行う。
追加された 著者 user2273146,
requestWindowFeature は、 super.onCreate(savedInstanceState); の前に呼び出される必要があります。
追加された 著者 Jorge Arimany,
その場合、 super.onCreate()の前に requestFeature()を呼び出す必要がある場合は、AppCompatライブラリを使用しない限り正しい@
追加された 著者 Jorge Arimany,
これをフラグメントから処理しようとしている他の人は、それを含むアクティビティの OnCreate()から requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); を呼び出し、 getActivity ().setSupportProgressBarIndeterminateVisibility(t‌ rue); をフラグメントから削除します。
追加された 著者 jokeefe,

私はあなたが必要としていることを正確に示すために最も簡単なものを見つけました。 ここに見つかりました 。 1つのクラスを使用して、どこにでもプログレスバーを配置してください。

1
追加された

私の状況では、Android Support Libraryバージョン4を使用して、プログレスバーをフラグメントから更新する必要がありました。

私の "MainActivity extends ActionBarActivity"では、Jokeefeの示唆したように:

supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

setContentView(R.layout.activity_main);

私の断片の長期的な仕事では:

onPreExecute

actionBarActivity.setSupportProgressBarIndeterminateVisibility(true);

onPostExecute

actionBarActivity.setSupportProgressBarIndeterminateVisibility(false);
menu.clear();
actionBarActivity = (ActionBarActivity)getActivity();
actionBarActivity.supportInvalidateOptionsMenu();

これがOPに答えるかどうか分からないが、これは上記の投稿に基づいて私のために働いたものである。お役に立てれば。

0
追加された
応答が遅れて申し訳ありません。最後の3行がなければ、バーは私が変更する必要のあるコンテンツで更新されず空です。
追加された 著者 HostMyBus,
これを書かないとどうなるでしょう:menu.clear(); actionBarActivity =(ActionBarActivity)getActivity(); actionBarActivity.supportInvalidateOptionsMenu();
追加された 著者 Karioki,