Вызов getProgressDrawable () на RatingBar отображает только одну звезду

У меня есть обычное RatingBar в моем приложении, которое должно отображать либо средний рейтинг сайта, либо рейтинг пользователя для фильма, если пользователь оценил его. Цвет должен меняться в зависимости от того, отображается ли рейтинг в среднем по сайту или рейтинг пользователя.

Вот этот процесс: просмотр пользовательских фильмов. Отображается средний рейтинг сайта для фильма.

Код макета для RatingBar:

<RatingBar android:id="@+id/ratingBar" android:isIndicator="true" android:layout_margin="10dip" style="@style/RatingBar" android:progressDrawable="@drawable/site_rating_bar" android:stepSize="0.1" /> 

РейтингBar стиль:

 <style name="RatingBar" parent="@android:style/Widget.RatingBar"> <item name="android:numStars">10</item> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> <item name="android:minHeight">30dip</item> <item name="android:maxHeight">30dip</item> </style> 

site_rating_bar.xml:

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+android:id/background" android:drawable="@drawable/btn_rating_star_off" /> <item android:id="@+android:id/secondaryProgress" android:drawable="@drawable/btn_rating_star_off" /> <item android:id="@+android:id/progress" android:drawable="@drawable/btn_site_rating_star_on" /> </layer-list> 

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

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

 ratingBar.setProgressDrawable(thisActivity.getResources().getDrawable(R.drawable.user_rating_bar)); 

user_rating_bar.xml:

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+android:id/background" android:drawable="@drawable/btn_rating_star_off" /> <item android:id="@+android:id/secondaryProgress" android:drawable="@drawable/btn_rating_star_off" /> <item android:id="@+android:id/progress" android:drawable="@drawable/btn_user_rating_star_on" /> </layer-list> 

Я попытался сохранить исходные границы и сбросить их, но это не помогло:

 Rect bounds = ratingBar.getProgressDrawable().getBounds(); ratingBar.setProgressDrawable(thisActivity.getResources().getDrawable(R.drawable.user_rating_bar)); ratingBar.getProgressDrawable().setBounds(bounds); 

Также попробовал сброс numStars, если он потерялся.

Любые идеи получили высокую оценку. ТИА. 🙂

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

 <RatingBar android:id="@+id/beer_rating" android:numStars="5" android:progressDrawable="@drawable/rating_bar" android:indeterminateDrawable="@drawable/rating_bar" android:stepSize="0.5" android:isIndicator="true" android:layout_gravity="center" style="?android:attr/ratingBarStyleSmall" /> <RatingBar android:id="@+id/beer_rating_average" android:indeterminateDrawable="@drawable/rating_bar_average" android:isIndicator="true" android:layout_gravity="center" android:numStars="5" android:progressDrawable="@drawable/rating_bar_average" android:stepSize="0.5" android:visibility="gone" style="?android:attr/ratingBarStyleSmall"/> 

Затем просто перелистывайте видимость на них при необходимости:

 findViewById(R.id.beer_rating).setVisibility(View.GONE); findViewById(R.di.beer_rating_average).setVisibility(View.VISIBLE); 

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

Попробуйте использовать: Используйте ProgressBar.setProgressDrawableTiled (Drawable)

И установите minSDK равным 21

Intereting Posts
Отклонить DatePickerDialog при нажатии кнопки возврата Утечка памяти класса ClassLoader Карты Android – использование макета в качестве элемента наложения Onclicklistner не работает в списке фрагментов Eclipse Stalling на Android apk Install Комплект Eclipse ADT зависает, когда телефон подключен Метод WebView + WebChromeClient onCreateWindow не вызывается для target = "_ blank" Обнаружение начала прокрутки и завершения прокрутки в режиме recyclerview ClassLoader ссылается на неизвестный путь: / data / app / AndroidTestCase не может найти ресурс тестового проекта при выполнении через maven Android M – проверить разрешение времени выполнения – как определить, проверен ли пользователь «Никогда не спрашивать снова»? MarkerView выходит из графика для последней точки на графике WebView внутри ScrollView, похоже, работает нормально, но предупреждения не использовать – альтернатива? Intellij Device не указано в UI editor android Пользовательский ImageView автоматически изменяется на Nexus 7