减小评分条尺寸的问题。

11
我想要缩小评分条的大小,我找到了一些可以实现它的样式属性,但它们不可通过用户交互进行调整,只是一种指示器。所以,请告诉我如何缩小尺寸。谢谢。

1
请参考此链接,它可能满足您的需求:https://dev59.com/-XE85IYBdhLWcg3wPA98#6882182 - Mohammed Azharuddin Shaikh
4个回答

26

如何使用这里提供的代码?

步骤1:在res/drawable文件夹中添加自己的评分星星...

一个满星

一个空星

步骤2:在res/drawable文件夹中添加名为ratingstars.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" />
</layer-list>

第三步 在 res/values 中,你需要创建以下的 styles.xml 文件...

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="foodRatingBar" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/ratingstars</item>
        <item name="android:minHeight">22dip</item>
        <item name="android:maxHeight">22dip</item>
    </style>
</resources>

步骤4 在你的布局中...

<RatingBar 
      android:id="@+id/rtbProductRating"
      android:layout_height="wrap_content"
      android:layout_width="wrap_content"
      android:numStars="5"
      android:rating="3.5"
      android:isIndicator="false"
      style="@style/foodRatingBar"    
/>  

尝试使用Activity...

package x.y;

import android.app.Activity;
import android.os.Bundle;

public class RatingBarDemo extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.product);

    }
}

使用这个布局 product.xml ...

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="5dip"
    android:paddingBottom="5dip">
    <ImageView
        android:id="@+id/imgProduct"
        android:layout_width="50dip"
        android:layout_height="50dip" 
        android:src="@drawable/icon" 
        android:scaleType="centerCrop"
        />
    <RelativeLayout
        android:id="@+id/layProductInfo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/imgProduct"
        android:paddingLeft="5dip"
        android:paddingRight="0dip"
        android:paddingTop="5dip"
        android:paddingBottom="5dip">  
        <TextView
            android:id="@+id/tvProductName"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Product Name"
            android:textSize="17dip" 
            />
        <RatingBar 
            android:id="@+id/rtbProductRating"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:numStars="5"
            android:rating="3.5"
            android:isIndicator="false"
            style="@style/foodRatingBar"
            android:layout_below="@id/tvProductName"
            />  
        <TextView
            android:id="@+id/tvPriceLabel"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="$45.87"
            android:layout_toRightOf="@id/rtbProductRating"
            android:layout_below="@id/tvProductName"
            android:paddingLeft="10dip"
            android:textSize="17dip" 
            />  
      </RelativeLayout>     
  </RelativeLayout>

1
您实际上不需要半颗星星的图像。 - Jayson Tamayo
1
如果我这样使用评分栏,那么评星图像在下方会被拉伸。我可以做什么来防止这种情况发生? - Jayeshkumar Sojitra
1
据我所知,平台存在一个限制,即评分星级不会自动缩放,因此评分星级的可绘制大小必须与最大高度和最大宽度相同。 - Vaibhav Jani

0

工作代码: 您可以轻松地减小评分栏星星的大小 只需在xml中添加以下内容

android:scaleX="0.5" android:scaleY="0.5"

  <RatingBar
            android:id="@+id/ratingBar_visibility"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:numStars="5"
            android:scaleX="0.5"
            android:scaleY="0.5" />

0

我在这里搜索了很多关于同样问题的帖子,并尝试了@Vaibhav A. Jani提供的答案,但我突然发现了一个更简单的解决方法。虽然我不是说@Vaibhav A. Jani的回答不正确。

试试这个,它对我来说可以看到更小的星星:

RatingBar ratingBar = new RatingBar(context, null, android.R.attr.ratingBarStyleSmall);

而且我还能够动态创建许多评分条,无需触碰任何xml文件,只需使用Java编码。

参考资料


0

尝试更改样式

 <RatingBar
        android:layout_width="wrap_content"
        android:rating="4.5"
        style="@style/Base.Widget.AppCompat.RatingBar.Small"
        android:layout_height="wrap_content" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接