Подтвердить что ты не робот

Индикатор прогресса панели действий и кнопка обновления

Можно ли показать индикатор прогресса (тот, который отображается с помощью функции requestWindowFeature (Window.FEATURE_INDETERMINATE_PROGRESS) вместо кнопки обновления?

Идея заключается в том, чтобы работать с клиентом Gmail: когда не загружается кнопка обновления шоу и при загрузке отображается неопределенный счетчик вместо кнопки обновления

4b9b3361

Ответ 1

Да, вы можете сделать это легко таким образом.

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>

Ответ 2

Вы можете попробовать следующее: поместите как кнопку обновления, так и неопределенный счетчик внутри FrameLayout, чтобы они были уложены в плоскости z, отображаются в том же положении на экране. Тогда вам просто нужно сыграть с Видимостью. Когда вы хотите показать кнопку обновления, вы установите невидимый счетчик и кнопку на заметку. Когда вы хотите показать счетчик, установите его на видимое, а кнопка - на невидимое.