Android RatingBar屏幕缩放问题

Android RatingBar屏幕缩放问题,android,scaling,screen-size,ratingbar,Android,Scaling,Screen Size,Ratingbar,我想知道有人能帮我吗。当在不同的屏幕密度上显示时,使用自定义分级栏时,我遇到了缩放问题。我已经建立了一个快速示例项目来解释我的问题。这只是一个非常基本的项目,目前只关注大屏幕大小,而不考虑密度 正如您从图像中看到的,我有一个用于分级条的选择器,然后在每个大密度可绘图文件夹中有两个独立分级条的默认和完整图像(目前所有图像大小相同)。以显示此自定义分级栏。我已经尝试让这些分级栏正确显示,并尝试了两种不同的方式,如下所述。我尝试在布局文件中指定分级栏的宽度和高度的第一种方法,如下所示: <Lin

我想知道有人能帮我吗。当在不同的屏幕密度上显示时,使用自定义分级栏时,我遇到了缩放问题。我已经建立了一个快速示例项目来解释我的问题。这只是一个非常基本的项目,目前只关注大屏幕大小,而不考虑密度

正如您从图像中看到的,我有一个用于分级条的选择器,然后在每个大密度可绘图文件夹中有两个独立分级条的默认和完整图像(目前所有图像大小相同)。以显示此自定义分级栏。我已经尝试让这些分级栏正确显示,并尝试了两种不同的方式,如下所述。我尝试在布局文件中指定分级栏的宽度和高度的第一种方法,如下所示:

<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>

在查看GUI图形布局时,这将生成以下输出,显示在基本的10.1屏幕大小vs Nexus 10上。它似乎在复制和拉伸图像

现在,当我尝试第二种方法时,这更像我想要的方法(不必指定每个比率条的确切大小,只需设置要环绕的布局宽度和高度,代码如下:

<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>

当查看GUI图形布局时,这将生成以下输出,显示在基本的10.1屏幕大小vs Nexus 10上。这将切断分级栏的图像底部


我希望能做的就是,无论屏幕的密度如何,都能毫无问题地显示多个分级条。有人能帮我弄清楚为什么Nexus10屏幕上显示的不同,以及如何修复它吗?我已经在这方面停留了一段时间,如果有人能够提供一些信息,那将是非常棒的。Tha非常提前通知您。

在上面@Xavers的评论之后,这个问题是由于图像的缩放不正确造成的。解决这个问题的方法是遵循缩放比例,如下面的答案所示-


感谢您的帮助@Xaver

首先引起我注意的是,您将minWidth设置为150dp:
android:minWidth=“150dp”
但maxWidth仅设置为111dp:
android:maxWidth=“111dp”
。高度也一样。为什么不将宽度和高度设置为固定大小?就像这样:
android:layout\u width=“150dp”android:layout_height=“111dp”
。非常感谢您的评论。我会在早上第一件事检查这一点,让您知道,并按照您的建议交换设置版面宽度和高度。我希望上面的最小值和最大值只是一个输入错误,我已将最小值和最大值高度指定为111,最小值和最大值宽度指定为150。我会检查第一件事。非常感谢您r花时间评论。我的意思是,在你的资源中,你应该在4个不同的文件夹中有4个不同版本的图像。每个版本都有不同的分辨率,android会根据你设备的像素密度选择正确的图像。如果这4个图像中的一个分辨率不正确,那么图像将有不同的s在某些设备上放大。您需要的文件夹是
可绘制mdpi
可绘制hdpi
可绘制xhdpi
可绘制xxhdpi
。您可以找到更多信息。只需使用或图像大小调整器缩放图像,然后检查您的问题是否已解决,生成的图像可能太小,但如果该问题已解决,则会导致图像太小我们知道这就是问题所在。之后,我可以帮助您将图像调整到正确的大小。
ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
0.75 | 1    | 1.33  | 1.5  | 2     | 3      | 4