Панель рейтинга с пользовательским стилем показывает плохие изображения

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

введите здесь описание изображения

введите здесь описание изображения

и используйте следующие коды:

мой пользовательский рисунок:

    <?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/ic_list_item_wstar" />
    <item android:id="@+android:id/secondaryProgress"
          android:drawable="@drawable/ic_list_item_wstar" />
    <item android:id="@+android:id/progress"
          android:drawable="@drawable/ic_list_item_ystar" />
</layer-list>

мой собственный стиль:

   <style name="YellowRatingBar" parent="@android:style/Widget.RatingBar">
    <item name="android:progressDrawable">@drawable/ic_ratingbar_yellow</item>
    <item name="android:minHeight">22dip</item>
    <item name="android:maxHeight">22dip</item>
</style>

мой рейтинговый штрих-код:

    <RatingBar
    android:id="@+id/ratingBar1"
    style="@style/YellowRatingBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
        android:isIndicator="false"
    android:rating="3.7" />

но это не дает хорошего результата, и мой результат выглядит следующим образом:

введите здесь описание изображения

ИЗМЕНИТЬ

размер иконок 17х17пикселей. Я установил минимальный и максимальный размер на 17dp, и черные линии стали меньше, и, наконец, когда я установил на 11dp, черные линии исчезли.

почему мне нужно установить минимальный и максимальный размер меньше фактического размера значка??!!


person Husein Behboudi Rad    schedule 12.10.2014    source источник
comment
Что, если вы просто попытаетесь использовать @drawable/ic_list_item_wstar в своем пользовательском стиле?   -  person sergej shafarenka    schedule 12.10.2014
comment
Я использовал только ic_list_item_wstar, и проблема еще не решена.   -  person Husein Behboudi Rad    schedule 12.10.2014
comment
Может ли быть так, что ваш @drawable/ic_list_item_wstar доступен для рисования с 9 патчами (имеет .9.png в конце)? Тогда он будет вести себя так.   -  person sergej shafarenka    schedule 12.10.2014
comment
нет, они не 9-патч. это файлы .png   -  person Husein Behboudi Rad    schedule 12.10.2014
comment
Как вы решили эту проблему? Я также сталкиваюсь с той же проблемой.   -  person Vikrant_Dev    schedule 21.10.2014
comment
Я еще не решил это по-хорошему. но установка ширины полосы скорости на меньший размер помогла мне. например, в этом случае размер изображения равен 17, и я установил размер скорости 11.   -  person Husein Behboudi Rad    schedule 21.10.2014


Ответы (3)


У меня была такая же проблема с перетаскиванием строк при использовании пользовательских изображений звездочек в строке рейтинга.

Простым решением этой проблемы является keep a padding of 1px to the star image

Например, рассмотрите два изображения ниже;

Image1 32x32px- Image1

Image2 36x36px- Image2

Image1 — это исходное изображение размером 32 x 32 пикселя, создающее эффект перетаскивания, в то время как

Image2 — это то же изображение, но с отступом в 1 пиксель, что делает размер изображения 36x36px и удаляет эффект перетаскивания.

почему мне нужно установить минимальный и максимальный размер меньше фактического размера значка ??

Это потому, что вы поместили свои изображения (17x17px) в папку drawable-hdpi, а для hdpi 17px = 11,33dp.

Что вы можете сделать, так это поместить изображения в папку drawable, а затем установить minheightandmaxheightto17dp. Однако размещение изображений в папке с возможностью рисования - неправильный способ сделать это.

Лучше всего размещать изображения разных размеров в пикселях в каждом drawable-mdpi, drawable-hdpi, drawable-xhdpi и папки drawable-xxhdpi.

Следовательно, изображение 17x17px должно быть помещено в папку drawable-mdpi. Итак (в вашем случае) соответствующие размеры изображений для размещения в папках:

drawable-mdpi - 17x17px
drawable-hdpi - 25x25px
drawable-xhdpi - 34x34px
drawable-xxhdpi - 51x51px

и

<item name="android:minHeight">17dp</item>
<item name="android:maxHeight">17dp</item>

Для расчета размеров изображений в разных папках вы можете использовать метод преобразования dp в px.

person Laksh    schedule 10.03.2015

Основы панели оценок в Android Studio

Простая панель оценок без материального дизайна

Как добавить?

I. В вашем build.gradle добавьте последнюю библиотеку appcompat.

dependencies {  
    compile 'com.android.support:appcompat-v7:X.X.X' // where X.X.X version
}

II. Расширьте свою активность android.support.v7.app.AppCompatActivity.

public class MainActivity extends AppCompatActivity {  
    ...
}

III. Объявите свой RatingBar внутри любого файла layout.xml.

<RatingBar  
    android:rating="3.5"
    android:rating="3.5"
    android:stepSize="0.5"
    android:numStars="5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

**

Как стилизовать?

**

I. Объявите пользовательский стиль в файле styles.xml.

<style name="RatingBar" parent="Theme.AppCompat">  
    <item name="colorControlNormal">@color/indigo</item>
    <item name="colorControlActivated">@color/pink</item>
</style> 

II. Примените этот стиль к RatingBar через атрибут android:theme.

<RatingBar  
    android:theme="@style/RatingBar"
    android:rating="3"
    android:stepSize="0.5"
    android:numStars="5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

если вам это нравится и вы хотите узнать больше о Материальном дизайне http://exandroidstudio.blogspot.in/2015/11/rating-bar-material-design-tips.html

person Bhavik Limani    schedule 19.11.2015
comment
Как этот ответ связан с этим вопросом о формах? - person Vince; 10.05.2019

идея fastes состоит в том, чтобы добавить дополнительное дополнение 1dp к вашему изображению. Сделайте это в PhotoShop или любом графическом редакторе. После наличия этого дополнительного пространства все должно работать.

person Wiktor Kalinowski    schedule 17.12.2018
comment
Это не дает ответа на вопрос. Получив достаточную репутацию, вы сможете /comment">прокомментировать любой пост; вместо этого дайте ответы которые не требуют разъяснений от спрашивающего. – Из обзора - person Shine; 17.12.2018
comment
Я не согласен, что это то, что я сделал, и это решает проблему. - person Wiktor Kalinowski; 18.12.2018