我想减少评级栏的大小,我有一些样式属性可以做到这一点,但是它们不在用户交互的范围内,它们只是指标。所以,请让我知道如何减小尺寸。提前谢谢。
答案 0 :(得分:26)
如何粘贴给定here ...
的代码 <强>步骤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>
步骤3在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"
/>
尝试活动......
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 :(得分:0)
我在这里搜索了很多相同问题的帖子,我正在尝试@Vaibhav A. Jani提供的答案,当时我刚刚通过一个更简单的解决方案来解决这个问题。我并不是说@Vaibhav A. Jani答案不正确。
试试这个,它让我看到更小的星星:
RatingBar ratingBar = new RatingBar(context, null, android.R.attr.ratingBarStyleSmall);
而且我还能够动态创建大量的RatingBar,而不需要触及任何xml文件,只需编写java代码。
答案 2 :(得分:0)
尝试更改样式
<RatingBar
android:layout_width="wrap_content"
android:rating="4.5"
style="@style/Base.Widget.AppCompat.RatingBar.Small"
android:layout_height="wrap_content" />
答案 3 :(得分:0)
工作代码: 您可以轻松减少评级栏明星的大小 只需添加xml,如下所示
<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" />