【问题标题】:Issue styling Rating bar问题样式评分栏
【发布时间】:2016-06-01 02:25:00
【问题描述】:

我在设置评分栏时遇到问题

这是截图

我想减小评分栏的大小。我知道我可以使用小样式来使它们变小,但这太小了。我可以做一些中等风格的吗?。

这是我的 xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#F0EEEF">
<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="RATE OUR SERVICES"
    android:gravity="center"
    android:textColor="@color/textColor"
    android:textStyle="bold"/>
    </LinearLayout>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="By Quality"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp"/>
    <RatingBar
        android:theme="@style/RatingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="5dp"
        android:numStars="5"
        android:isIndicator="false" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="By Services"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"/>
    <RatingBar
        android:theme="@style/RatingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="5dp"
        android:numStars="5"
        android:isIndicator="false" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="By Time"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"/>
    <RatingBar
        android:theme="@style/RatingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="5dp"
        android:numStars="5"
        android:isIndicator="false" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Overall Rating"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"/>
    <RatingBar
        android:theme="@style/RatingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="5dp"
        android:numStars="5"
        android:isIndicator="false" />
</LinearLayout>

【问题讨论】:

  • 代替 wrap_content 为 layout_widht 和 layout_height,将你想要的尺寸放在 dp 中。 (例如 layout_width 为 150dp)
  • 在 dp 中给出高度宽度时,评分栏会被裁剪
  • 我认为 RatingBar 太静态了.....见这里:stackoverflow.com/questions/2874537/…

标签: android ratingbar


【解决方案1】:

您可以使用自定义 RatingBar。以下是代码 1.在drawable中创建一个文件custom_ratingbar.xml

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

然后在您的 RatingBar 中使用以下内容:-

<RatingBar
    android:id="@+id/ratingBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:progressDrawable="@drawable/custom_ratingbar"
    android:numStars="5"
    android:stepSize="0.2"
    android:rating="3.0" />

【讨论】:

    【解决方案2】:

    您可以为 ratingbar 创建自定义样式以使其具有合适的大小:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="foodRatingBar" parent="@android:style/Widget.RatingBar">
            <item name="android:minHeight">48dip</item> <!-- your desired size -->
            <item name="android:maxHeight">48dip</item> <!-- your desired size -->
        </style>  
    </resources>
    

    然后在您的评分栏上使用此样式。 还有更具体的教程:http://kozyr.zydako.net/2010/05/23/pretty-ratingbar/

    【讨论】:

      【解决方案3】:

      我制作了一个自定义评分栏,可能会对您有所帮助:SimpleRatingBar

      它的特点:

      • 完全正常工作android:layout_width:可以设置为wrap_contentmatch_parent 或abritary dp。
      • 任意数量的星星。
      • 任意步长。
      • 星星的大小可以精确控制或通过设置最大大小来控制。
      • 可自定义颜色(星星的边框、填充和背景)。
      • 可自定义的星号间距。
      • 可自定义的星星边框宽度。
      • 允许设置 OnRatingBarChangeListener
      • 星形填充可以设置为从左到右或从右到左开始(支持 RTL 语言)。
      • AnimationBuilder 集成在视图中,可通过动画以编程方式设置评分。

      Here is a preview of it.

      您可以在jcenterMaven Central 中找到它。所以在你的 build.gradle 文件中添加你的依赖项:

      compile 'com.iarcuschin:simpleratingbar:0.1.+'

      希望对你有用。

      【讨论】:

      • 这个项目已经结束了,下次一定会试一试
      猜你喜欢
      • 1970-01-01
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 1970-01-01
      相关资源
      最近更新 更多