У меня есть форма, которую я динамически генерирую из данных, получаемых с веб-службы. Эта веб-служба предоставляет изображения, которые необходимо использовать при создании элементов ввода. Я затрудняюсь установить progressDrawable
для RatingBar
. Хотя XML я могу применить пользовательское изображение, используя следующее как progressDrawable
:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+android:id/background" android:drawable="@drawable/custom_star" />
<item android:id="@+android:id/secondaryProgress" android:drawable="@drawable/custom_star" />
<item android:id="@+android:id/progress" android:drawable="@drawable/custom_star" />
</layer-list>
где custom_star
- это простое .png изображение, а @android:style/Widget.RatingBar
- стиль RatingBar. Это отлично работает:
но я хочу динамически изменять custom_star
.
В коде я попытался установить доступность выполнения с помощью растрового изображения напрямую:
Drawable d = new BitmapDrawable(getResources(), downloadedImage);
ratingBar.setProgressDrawable(d);
а также построением a layer-list
:
LayerDrawable layerDrawable = new LayerDrawable(new Drawable[] {
getResources().getDrawable(R.drawable.custom_star),
getResources().getDrawable(R.drawable.custom_star),
getResources().getDrawable(R.drawable.custom_star)
});
layerDrawable.setId(0, android.R.id.background);
layerDrawable.setId(1, android.R.id.secondaryProgress);
layerDrawable.setId(2, android.R.id.progress);
ratingBar.setProgressDrawable(layerDrawable);
Ни для меня не работает; оба приводят к появлению custom_star
, который появляется один раз, растягивается на размеры RatingBar
:
Любые идеи?
Update:
Ответ Luksprog ниже сделал улучшение, но у меня все еще есть пара проблем. Теперь вытягиваемая звезда не растягивается, и значение может быть установлено прикосновением, но оно выглядит так, как показано на рисунке 3/5:
и 5/5:
Я считаю, что масштабирование изображений может быть исправлено с помощью нескольких настроек, но досадно, что secondaryProgress
drawable, похоже, не задан - drawable используется для серых не выбранных звезд. Без этого он не очень полезен.