我有一个片段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已经!
答案 0 :(得分:0)
Android中尚不支持在运行时动态更改视图样式,但通过setTextAppearance的TextViews除外。
您必须在绘制视图之前设置样式, 通过XML或构造函数中的Java。
RatingBar ratingBar = new RatingBar(context, null, android.R.attr.ratingBarStyleSmall);
答案 1 :(得分:0)
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);