Как я могу сделать пользовательский индикатор на панели действий? - PullRequest
4 голосов
/ 28 июля 2011

Это не столько панель действий, сколько создание пользовательского индикатора выполнения, с которым мне нужна помощь. Я хочу создать точно так же, как Catch Notes - https://ssl.gstatic.com/android/market/com.threebanana.notes/ss-480-0-9 https://market.android.com/details?id=com.threebanana.notes

Я пробовал несколько раз разными способами. Я посмотрел на множество учебных пособий, в том числе Android Dev Guide. Я очень сильно рассержен на этом этапе. Кто-нибудь предложит мне помощь, пожалуйста?

Прямо сейчас моя панель действий вызывает общий макет индикатора выполнения, и он отлично работает.

switch (item.getItemId()) {
    case R.id.refresh:
        item.setActionView(R.layout.progress);
        return true;

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" android:weightSum="1">

<ProgressBar android:id="@+id/progress" 
style="?android:attr/progressBarStyleSmall"  
android:layout_width="wrap_content" 
android:layout_height="wrap_content">
</ProgressBar>

</LinearLayout>

Ответы [ 2 ]

2 голосов
/ 07 сентября 2011

Чтобы индикатор выполнения отображался, вам нужно включить ActionBar.DISPLAY_SHOW_CUSTOM в ActionBar.displayOptions.

Для отслеживания заметок используется настраиваемая анимация для индикатора выполнения.Я думаю, что по умолчанию Holo (нормального размера) является разумной альтернативой, но чтобы получить что-то похожее на их, вам нужно будет создать animationDrawable.

http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html

Затем получите пользовательское представление из ActionBar с помощью getCustomView (), найдите свой ImageView и запустите его анимацию.

1 голос
/ 27 мая 2012

LinearLayout, окружающий индикатор выполнения, не нужен; также обратите внимание, что я добавил «expandActionView ()» после настройки представления действия элемента.

switch (item.getItemId()) {
    case R.id.refresh:
        item.setActionView(R.layout.progress);
        item.expandActionView();
        return true;

Имейте это в res / layout / progress.xml:

<?xml version="1.0" encoding="utf-8"?>
<ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/progressBarStyleSmall"  
android:layout_width="wrap_content" 
android:layout_height="wrap_content">
</ProgressBar>

Технически, наличие макета для этого не нужно:

switch (item.getItemId()) {
    case R.id.refresh:
        item.setActionView(new ProgressBar(this, null, android.R.attr.progressBarStyleSmall));
        item.expandActionView();
        return true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...