Что означает атрибут android:progressBarStyle в ProgressBar?

Я просматривал документацию для класса ProgressBar и нашел следующие атрибуты:

  • Android: прогрессбарстиле
  • Android: ProgressBarStyleHorizontal
  • Android: прогрессбарстилеларже
  • Android: прогрессбарстилесмалл

Эти четыре параметра должны быть отсылкой к какому-то стилю, как я понимаю. Так вот вопрос, для чего они? Стиль индикатора выполнения задается с помощью атрибута android:style и ссылки на глобальные атрибуты стиля.

Документация не говорит ничего полезного, искал в Интернете, ничего не нашел.


person Malcolm    schedule 26.11.2010    source источник


Ответы (3)


Четыре атрибута, которые вы упомянули, могут быть применены к стилю ProgressBar следующим образом:

style="?android:attr/progressBarStyleHorizontal"

Константа стиля android:progressBarStyleHorizontal — это ваш типичный добавочный индикатор выполнения:

альтернативный текст

В то время как остальные три имеют разные размеры одного и того же круглого индикатора выполнения:

style="?android:attr/progressBarStyleSmall"

альтернативный текст

style="?android:attr/progressBarStyle"

альтернативный текст

style="?android:attr/progressBarStyleLarge"

альтернативный текст

Обновление:

Согласно комментариям Адама:

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

person McStretch    schedule 27.11.2010
comment
Документация означает то, что она говорит, просто она не очень многословна. ;) Это атрибуты темы, которые указывают на тематические стили, которые вы можете использовать для индикаторов прогресса. Их точные значения могут меняться от темы к теме, это просто уровень косвенности. Этот ответ правильный. Установите атрибут стиля на один из них. Они не являются атрибутами самого ProgressBar. - person adamp; 27.11.2010
comment
@adamp: Спасибо за разъяснение, я обновлю свой ответ, чтобы отразить ваши комментарии. - person McStretch; 28.11.2010
comment
Таким образом, ответ в основном не является атрибутом самого ProgressBar. Да, я знаю, как установить стиль индикатора выполнения. :) Мне просто интересно, что изменится, если изменить атрибуты, но если эти атрибуты на самом деле не являются атрибутами, то все становится ясно. P.S. Некоторые части документации Android действительно отстой. - person Malcolm; 28.11.2010
comment
Это являются атрибутами, но атрибутами тем, а не виджета ProgressBar. Синтаксис ?android:attr/foo с ? sigil означает разрешение ресурса, содержащегося в этом атрибуте темы, в рамках текущей темы. - person adamp; 28.11.2010
comment
Я разработал и настраиваемый вид и использовал его как компонент lib. Здесь я использую индикатор выполнения, но не могу изменить атрибут style=?android: для того же. Он показывает тот же индикатор выполнения, который я проверил с другим параметром, чтобы убедиться, что я использую то же самое. Любое предложение !!! - person CoDe; 07.07.2014

В случае, если кто-то ищет полный блок кода

<ProgressBar
android:id="@+id/ProgressBar2"
style="?android:attr/progressBarStyleLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
person Zohab Ali    schedule 02.08.2018

Запутанная часть заключается в том, что обычно вы можете определить стиль по умолчанию для виджета (например, кнопки) следующим образом:

<item name="android:buttonStyle">@style/Widget.AppCompat.Button.Colored</item>

Этот стиль по умолчанию будет применяться ко всем кнопкам.

Можно было бы подумать, что атрибут progressBarStyle будет делать то же самое для ProgressBar, если сделать это:

<item name="android:progressBarStyle">@style/Widget.AppCompat.ProgressBar</item>

Но это не так, так как progressBarStyle относится к ActionBar styleable.

person Timon Langlotz    schedule 12.11.2019
comment
Когда вы используете AppCompat, вы должны использовать progressBarStyle вместо android:progressBarStyle. Это справедливо для всех виджетов, кроме android:textViewStyle. Согласитесь, что это запутанно. - person Eugen Pechanec; 13.11.2019
comment
Неправда, вам нужно сделать это только для атрибутов, принадлежащих виджету AppCompat... (например, AppCompatEditText, AppCompatImageView и т. д.). Здесь нет AppCompatProgressBar, поэтому определение progressBarStyle без префикса Android не имеет никакого эффекта. - person Timon Langlotz; 13.11.2019
comment
Блин, ты прав, забыл об этом. И это даже не связано с progressBarStyle AppCompat. Согласно исходному коду ProgressBar, по умолчанию он должен подбирать android:progressBarStyle. Почему бы вам не исследовать, почему это не работает в вашем случае? Stack Overflow - это не форум, и ваш пост на самом деле не отвечает на вопрос. - person Eugen Pechanec; 13.11.2019