Панель рейтинга стиля проблемы

У меня проблемы со стилем рейтинга

Вот скриншот

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

Вот мой xml

    <?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:background="#ffffff">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#F0EEEF">
<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="RATE OUR SERVICES"
    android:gravity="center"
    android:textColor="@color/textColor"
    android:textStyle="bold"/>
    </LinearLayout>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="By Quality"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp"/>
    <RatingBar
        android:theme="@style/RatingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="5dp"
        android:numStars="5"
        android:isIndicator="false" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="By Services"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"/>
    <RatingBar
        android:theme="@style/RatingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="5dp"
        android:numStars="5"
        android:isIndicator="false" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="By Time"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"/>
    <RatingBar
        android:theme="@style/RatingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="5dp"
        android:numStars="5"
        android:isIndicator="false" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Overall Rating"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"/>
    <RatingBar
        android:theme="@style/RatingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="5dp"
        android:numStars="5"
        android:isIndicator="false" />
</LinearLayout>

person Vivek Mishra    schedule 19.02.2016    source источник
comment
Вместо wrap_content для layout_widht и layout_height укажите желаемый размер в dp. (например, 150 dp для layout_width)   -  person Chol    schedule 19.02.2016
comment
панель рейтинга обрезается при указании ширины высоты в dp   -  person Vivek Mishra    schedule 19.02.2016
comment
Я думаю, что RatingBar слишком статичен..... см. здесь: stackoverflow.com/questions/2874537/   -  person Opiatefuchs    schedule 19.02.2016


Ответы (3)


Вы можете использовать пользовательский RatingBar. Ниже приведен код 1. создайте файл в формате custom_ratingbar.xml.

<?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:id="@android:id/background"
android:drawable="@drawable/star_empty" />
 <item android:id="@android:id/secondaryProgress"
android:drawable="@drawable/star_empty" />
 <item android:id="@android:id/progress"
android:drawable="@drawable/star_full" />
</layer-list>

затем используйте следующее в своем RatingBar: -

<RatingBar
    android:id="@+id/ratingBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:progressDrawable="@drawable/custom_ratingbar"
    android:numStars="5"
    android:stepSize="0.2"
    android:rating="3.0" />
person Community    schedule 19.02.2016

Вы можете создать собственный стиль для панели рейтинга, чтобы она имела подходящий размер:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="foodRatingBar" parent="@android:style/Widget.RatingBar">
        <item name="android:minHeight">48dip</item> <!-- your desired size -->
        <item name="android:maxHeight">48dip</item> <!-- your desired size -->
    </style>  
</resources>

затем используйте этот стиль для своей рейтинговой панели. Существует более конкретный учебник: http://kozyr.zydako.net/2010/05/23/pretty-ratingbar/.

person starkshang    schedule 19.02.2016

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

Особенности:

  • Полностью рабочий android:layout_width: можно установить wrap_content, match_parent или произвольное значение dp.
  • Произвольное количество звезд.
  • Произвольный размер шага.
  • Размер звезд можно точно контролировать или установить максимальный размер.
  • Настраиваемые цвета (граница, заливка и фон из звезд).
  • Настраиваемое разделение по размеру между звездами.
  • Настраиваемая ширина границы звезд.
  • Позволяет установить OnRatingBarChangeListener
  • Заполнение звезд можно настроить так, чтобы оно начиналось слева направо или справа налево (поддержка языка RTL).
  • AnimationBuilder интегрирован в представление для программной установки рейтинга с анимацией.

Предварительный просмотр.

Вы можете найти его либо в jcenter, либо в Maven Central. Итак, в вашем файле build.gradle просто добавьте к своим зависимостям:

compile 'com.iarcuschin:simpleratingbar:0.1.+'

Я надеюсь, что это полезно.

person FlyingPumba    schedule 03.08.2016
comment
Обязательно попробую в следующий раз, так как этот проект уже закончился. - person Vivek Mishra; 04.08.2016