我在尝试在不同大小的设备上使用多个横向图片时遇到了问题。 我有7个单独的Ratingbars,每个都使用不同的自定义图像。 我已经缩放了所有图像并将它们放入相应的dpi可绘制文件夹中。我的问题是在xlarge mdpi屏幕(如下图左上角)上,它们完美地适合,但是当我在较小的屏幕上查看它们时,整个7个评级栏太宽而无法适应设备的范围,如下所示:
ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
0.75 | 1 | 1.33 | 1.5 | 2 | 3 | 4
根据上述缩放比例,以下是我所有可绘制文件夹,显示其各自dpi文件夹中每个图像的尺寸(全部基于mdpi比率):
然后为了显示每个评分条,我为每个评分条设置了一个选择器,使用默认的灰色图像和基于评分值的彩色图像。以下展示了我使用布局来显示每个Ratingbar的代码。请注意:我已经根据基本的mdpi值设置了宽度和高度。
<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:numStars="1"
android:rating="1"
android:stepSize="0.01"
android:isIndicator="true"
android:layout_width="75dp"
android:layout_height="77dp"
android:layout_gravity="bottom"
android:gravity="bottom"
android:progressDrawable="@drawable/selector_a" />
<RatingBar
android:numStars="1"
android:rating="0.5"
android:stepSize="0.01"
android:isIndicator="true"
android:layout_width="73dp"
android:layout_height="114dp"
android:layout_gravity="bottom"
android:gravity="bottom"
android:progressDrawable="@drawable/selector_b" />
<RatingBar
android:numStars="1"
android:rating="0.5"
android:stepSize="0.01"
android:isIndicator="true"
android:layout_width="63dp"
android:layout_height="132dp"
android:layout_gravity="bottom"
android:gravity="bottom"
android:progressDrawable="@drawable/selector_c" />
<RatingBar
android:numStars="1"
android:rating="0.5"
android:stepSize="0.01"
android:isIndicator="true"
android:layout_width="79dp"
android:layout_height="145dp"
android:layout_gravity="bottom"
android:gravity="bottom"
android:progressDrawable="@drawable/selector_d" />
<RatingBar
android:numStars="1"
android:rating="0.5"
android:stepSize="0.01"
android:isIndicator="true"
android:layout_width="79dp"
android:layout_height="161dp"
android:layout_gravity="bottom"
android:gravity="bottom"
android:progressDrawable="@drawable/selector_e" />
<RatingBar
android:numStars="1"
android:rating="0.5"
android:stepSize="0.01"
android:isIndicator="true"
android:layout_width="108dp"
android:layout_height="168dp"
android:layout_gravity="bottom"
android:gravity="bottom"
android:progressDrawable="@drawable/selector_f" />
<RatingBar
android:numStars="1"
android:rating="0.5"
android:stepSize="0.01"
android:isIndicator="true"
android:layout_width="147dp"
android:layout_height="189dp"
android:layout_gravity="bottom"
android:gravity="bottom"
android:progressDrawable="@drawable/selector_g" />
</LinearLayout>
请问是否有人能帮我确保无论在哪个屏幕上显示Ratingbars,无论设备的密度如何,它都会始终保持相同的外观(就像显示所有不同屏幕的顶部左侧的10.1 mdpi屏幕上的外观一样)?非常感谢任何帮助。
非常感谢您抽出时间阅读这个问题。我已将代码放在Github上,位置如下:https://github.com/gbayo1/RatingBarScalingIssue.git
wrap_content
或match_parent
。有很多方法可以使你的布局与设备一起缩放。如果告诉我你希望它看起来怎样,我可以帮助你。 - Xaver Kapeller