如何为Ratingbar Android加载样式运行时

时间:2014-11-20 05:49:12

标签: android styles runtime ratingbar

我有一个片段Feedback.java。有一个按钮可以弹出一个弹出窗口。我在弹出窗口中创建一个评级栏。我的自定义评级栏样式在XML文件中定义。我在values / styles.xml中定义了Style

<style name="RatingBar1" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/rating_bar_full</item>
        <item name="android:minHeight">48dip</item>
        <item name="android:maxHeight">48dip</item>

    </style>

我使用以下代码创建了具有上述样式的RatingBar运行时。

LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
            param.setMarginStart(15);
    float stepSize = (float) 0.5;
    rating = new RatingBar(getActivity(), null,R.style.RatingBar1);
    rating.setNumStars(5);          
    rating.setStepSize(stepSize);

但评分栏未显示。我知道这是一个问题,Styles加载onCreate(),我们在ButtonClick上弹出popup。这就是Style不适用的原因。那么如何在运行时为我的RatingBar加载Style。任何建议。 Thanx已经!

2 个答案:

答案 0 :(得分:0)

Android中尚不支持在运行时动态更改视图样式,但通过setTextAppearance的TextViews除外。

您必须在绘制视图之前设置样式, 通过XML或构造函数中的Java。

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

答案 1 :(得分:0)

这对我有用。您可以在运行时为RatingBr将任何颜色设置为星星。试试这个。

rbCustom = new RatingBar(getActivity());
            rbCustom.setNumStars(5);

            rbCustom.setStepSize(stepSize);
            LayerDrawable stars = (LayerDrawable) rbCustom.getProgressDrawable();
            stars.getDrawable(2).setColorFilter(getResources().getColor(R.color.oceanBlue),Mode.SRC_ATOP);