Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RatingBar-一团乱麻_Android_Android Layout_Android Ui - Fatal编程技术网

Android RatingBar-一团乱麻

Android RatingBar-一团乱麻,android,android-layout,android-ui,Android,Android Layout,Android Ui,我知道这听起来有点夸张,但感觉Android的UI组件和行为有时候有些离谱 考虑以下XML: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <RatingBa

我知道这听起来有点夸张,但感觉Android的UI组件和行为有时候有些离谱

考虑以下XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

    <RatingBar
    android:id="@+id/ratingBar1"
    android:style="@android:style/Widget.Holo.Light.RatingBar.Small"
    android:progress="3"
    android:max="5"
    android:numStars = "5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />


</LinearLayout>

在不同大小的设备上显示的屏幕截图:

Nexus S评级条

平板电脑分级栏

小型设备额定值栏

即使它只是在预览工具中,我可以确认它在设备上的实际外观

小型设备的行为令人恼火。指定5颗星的分级栏如何只显示3颗星,为什么不缩小星星的比例以适应窗口

考虑到包装内容的宽度是个问题,我切换到layout_width=“fill_parent”,这并没有改变小型设备的外观,但它在平板电脑上完全搞砸了(5个“numStars”就这么多了):

我的问题是,有没有一种方法可以让分级条在尺寸方面表现出正确的行为?你可能认为numStars或max就足够了,但这完全是武断的。当拉长分级栏以便绘制更多的星星时,它会添加星星,并查看进度为3时,它如何根据显示的星星数绘制?不遵守numStars是没有意义的

如果无法从RatingBar获得逻辑性能,是否有包括第三方小部件在内的其他选择?如果不是的话,我想我可以画5个ImageView,然后装配它来执行相应的操作


(请记住,所有这些行为都是在布局中仅使用一个分级栏展示的-忘记尝试使用其他小部件/组件或使用您自己的样式来调整大小。我知道已经完成了,但为什么这是默认行为?

当使用股票分级栏时,我感觉和您一样,所以我自己做了:

它的特点是:

  • 完全工作的
    android:layout\u width
    :它可以设置为
    wrap\u content
    match\u parent
    或基本dp
  • 任意数量的星星
  • 任意步长
  • 恒星的大小可以精确控制,也可以通过设置最大大小来控制
  • 可定制的颜色(星星的边框、填充和背景)
  • 可定制的星间大小间隔
  • 可自定义的星星边框宽度
  • 允许设置OnRatingBarChangeListener
  • 星形填充可以设置为从左向右或从右向左开始(RTL语言支持)
  • 集成在视图中的AnimationBuilder可通过动画编程设置分级

您可以在
jcenter
Maven Central
中找到它。因此,在
build.gradle
文件中,只需添加到依赖项:

编译'com.iarcuschin:simpleratingbar:0.1.+'


我希望它有用。

为了解决这个问题,我刚刚创建了一个视图,该视图由5个图像视图组成,它们位于一个带有OnTouchListener@raybritton我想那是我最好的选择。我希望有一个更好的,但可惜不是这样:)。如果你把你的评论作为回答,我可以接受。这不是疯了吗?这个小部件需要关闭。我受够了和这类框架白痴做斗争!甚至我也在寻找另一种选择。希望很快就会有一个,或者我可能需要自己编写一个。我可以商业化使用吗?是的,你可以商业化使用。