Пользовательская строка заголовка с прогрессом в Android - PullRequest
7 голосов
/ 21 августа 2010

Мне было интересно, есть ли какой-нибудь способ добавить пользовательский заголовок с моей собственной прорисовкой, а затем впоследствии поместить индикатор выполнения в макет заголовка, чтобы он действовал как встроенный индикатор выполнения Android.

В моем коде - я хочу иметь возможность звонить setProgressBarIndeterminateVisibility(true) и отображать индикатор выполнения в моей пользовательской строке заголовка.

Возможно ли это?

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

Заранее спасибо.

РЕДАКТИРОВАТЬ: Прямо сейчас я использую свою собственную тему, которая выглядит примерно так:

<style parent="android:Theme.Light.NoTitleBar" name="BaseTheme">
    <item name="android:windowBackground">@drawable/splash_bg</item>
    <item name="android:windowTitleStyle">@style/TitleBackground</item>
</style>

Со стилем фона заголовка, как:

<style name="TitleBackground" parent="android:WindowTitleBackground">
    <item name="android:background">@drawable/title_bar</item>
</style>

Чтобы дать всемлучшая идея - как то такalt text

Ответы [ 4 ]

12 голосов
/ 19 октября 2010

Добавьте этот код в onCreate перед любым другим кодом:

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
requestWindowFeature(Window.FEATURE_PROGRESS);  

setProgress(xx); // Then use this to update the progress to xx amount

Для включения / выключения используйте

setProgressBarIndeterminateVisibility(false);  //true to turn on.

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

Я работаю над обновлением TabActivity в результате асинхронного вызова внутри Намерения действия, запускаемого TabActivity.Мне пришлось поместить строки «requestWind ....» как в TabActivity, так и в вызываемую активность.Кроме того, я обнаружил, что использование setProgress не принесло особых результатов, но анимация вращения вращалась все время, поэтому я счастлив.

4 голосов
/ 08 сентября 2010

Вот отличный пример реализации пользовательской строки заголовка с индикатором прогресса:

http://downloadandroid.info/2010/08/creating-a-custom-titlebar/

Мое решение состоит в том, чтобы иметь класс ActivityHelper, который расширяет Activity и включает в себя этометод, а также один, чтобы включить или выключить индикатор выполнения, а затем расширить этот класс для каждой из моих операций.

3 голосов
/ 08 сентября 2010

Я считаю, что единственный способ сделать это - использовать собственную строку заголовка. Вы МОЖЕТЕ переопределить код Android начиная с его открытого исходного кода - но это может быть плохой идеей. Лучше всего сделать макет строки заголовка и просто <include /> его во всех остальных макетах и, возможно, иметь вспомогательный класс для отображения и скрытия индикатора выполнения.

0 голосов
/ 02 ноября 2015

В более новых версиях метод requestWindowFeature не будет работать. Лучшим вариантом было бы использовать v7.widget.toolbar, предоставленный Google. Следующая ссылка дает подробную информацию о том, как его использовать.

Настройка панели действий

http://developer.android.com/training/appbar/setting-up.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...