Мне интересно, кто-нибудь сможет мне помочь, пожалуйста. У меня возникла проблема с масштабированием при работе с пользовательским RatingBar при отображении на экранах с разной плотностью. Я создал быстрый пример проекта, чтобы объяснить мою проблему. Это очень простой проект, который на данный момент касается только больших размеров экрана, независимо от плотности .
Как вы можете видеть на изображении, у меня есть селекторы, которые будут использоваться для RatingBar, а затем у меня есть стандартное и полное изображение для двух отдельных RatingBar в каждой из папок с большой плотностью рисования (на данный момент все изображения одного размера). Чтобы показать этот пользовательский RatingBar. Я попытался заставить эти RatingBars отображаться правильно и попробовал два отдельных способа, как указано ниже. В первом случае я попытался указать ширину и высоту RatingBars в файле макета, как показано ниже:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RatingBar
android:id="@+id/rb_test_1"
android:numStars="1"
android:rating="0.5"
android:stepSize="0.01"
android:isIndicator="true"
android:layout_width="150dp"
android:layout_height="111dp"
android:layout_gravity="bottom"
android:gravity="bottom"
android:progressDrawable="@drawable/selector_rb_test_1" />
<RatingBar
android:id="@+id/rb_test_2"
android:numStars="1"
android:rating="0.5"
android:stepSize="0.01"
android:isIndicator="true"
android:layout_width="200dp"
android:layout_height="154dp"
android:layout_gravity="bottom"
android:gravity="bottom"
android:progressDrawable="@drawable/selector_rb_test_2" />
</LinearLayout>
При просмотре графического макета графического интерфейса пользователя получается следующий вывод, отображаемый на базовом размере экрана 10.1 по сравнению с Nexus 10. Кажется, что изображение дублируется и растягивается.
Теперь, когда я пробую второй способ, который больше похож на то, как я хотел бы это сделать (не указывая точный размер каждого из RatingBars, просто устанавливая ширину и высоту макета для переноса, следующее код:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RatingBar
android:id="@+id/rb_test_1"
android:numStars="1"
android:rating="0.5"
android:stepSize="0.01"
android:isIndicator="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:gravity="bottom"
android:progressDrawable="@drawable/selector_rb_test_1" />
<RatingBar
android:id="@+id/rb_test_2"
android:numStars="1"
android:rating="0.5"
android:stepSize="0.01"
android:isIndicator="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:gravity="bottom"
android:progressDrawable="@drawable/selector_rb_test_2" />
</LinearLayout>
При просмотре графического макета графического интерфейса получается следующий вывод, отображаемый на экране с базовым размером 10,1 по сравнению с Nexus 10. Это обрезает нижнюю часть изображения для RatingBar.
Все, что я хочу сделать, это без проблем отображать несколько RatingBars независимо от плотности экрана. Может ли кто-нибудь помочь мне понять, почему он отображается по-разному на экране Nexus10 и как это исправить? Я застрял на этом некоторое время и был бы очень благодарен, если бы кто-нибудь смог пролить свет. Заранее большое спасибо.
android:minWidth="150dp"
, а maxWidth — только на 111dp:android:maxWidth="111dp"
. То же самое и с высотой. Почему бы вам просто не установить ширину и высоту на фиксированный размер? Вот так:android:layout_width="150dp" android:layout_height="111dp"
. - person Xaver Kapeller   schedule 03.05.2014drawable-mdpi
,drawable-hdpi
,drawable-xhdpi
иdrawable-xxhdpi
. Дополнительную информацию можно найти здесь. - person Xaver Kapeller   schedule 03.05.2014