web-dev-qa-db-ja.com

ActionBarにprogressBarを配置します

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

<item
    Android:id="@+id/menu_progress"
    Android:actionLayout="@layout/action_progress"
    Android:menuCategory="container"
    Android:showAsAction="always">
</item>

問題は、プログレスバーがアイテムと見なされるため、Nexus Sポートレートモードではアクションバーに他のアイテムが1つしかなく、Google +では2つのアイテムとprogressBarが表示されることです。 Androidアクションバーを使用してプログレスバーを配置するにはどうすればよいですか?

52
Matroska

注: 以下の機能はサポートライブラリで非推奨になりました。

電話する必要があります

_requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)
_

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

例えば.

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

support library を使用している場合、requestWindowFeaturesupportRequestWindowFeature

そして、呼び出します

_setProgressBarIndeterminateVisibility(true);
_

プログレススピナーを表示したいときはいつでもアクティビティで。

166
Kuffs

私の状況では、Androidサポートライブラリバージョン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
HostMyBus