Положите прогрессBar на ActionBar

Я пытаюсь поставить неопределенный ProgressBar на actionBar. Я использовал actionView для того, чтобы добавить progressBar, например, в приложение Google+.

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

проблема в том, что индикатор выполнения рассматривается как элемент, и поэтому в режиме просмотра Nexus S у меня есть только один элемент на панели действий, в то время как в Google+ я вижу два элемента плюс progressBar. Как можно поместить панель прогресса с помощью панели действий Android?

Ответ 1

ПРИМЕЧАНИЕ: Ниже приведена функциональность ниже в библиотеке поддержки.

Вам нужно позвонить

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)

в onCreate() перед настройкой макета действий:

например.

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

Если вы используете библиотеку поддержки замените requestWindowFeature на supportRequestWindowFeature

И затем вызовите

setProgressBarIndeterminateVisibility(true);

в своей деятельности, когда вы хотите показать счетчик прогресса.

Ответ 2

В моей ситуации потребовалось обновить индикатор выполнения из фрагмента с помощью библиотеки поддержки 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, но это то, что сработало для меня на основе вышеперечисленных сообщений. Надеюсь, это поможет.

Ответ 3

Я нашел самый простой способ показать прогресс точно так, как вам нужно. Я нашел его здесь , Просто используйте один класс и поместите свой индикатор выполнения, где хотите.