@H_404_1@怎么做以下呢?
如果RatingBar有1-3颗星 – 红星.
如果RatingBar有4颗星 – 黄色的星星.
如果RatingBar有5颗星 – 绿色星星.
((RatingBar) layout.findViewById(R.id.ratingBar)).setProgress(Integer.parseInt(surveyBeans.get(section).get(position).getRate())); <RatingBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ratingBar" android:stepSize="1" android:clickable="false" style="?android:attr/ratingBarStyleSmall" android:layout_gravity="right" android:layout_marginRight="15dp" />
编辑:
@Override public View getItemView(int section,int position,View convertView,ViewGroup parent) { LinearLayout layout; if (convertView == null) { LayoutInflater inflator = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); layout = (LinearLayout) inflator.inflate(R.layout.item_survey,null); } else { layout = (LinearLayout) convertView; } ((TextView) layout.findViewById(R.id.questionSurvey)).setText(surveyBeans.get(section).get(position).getQuestion()); RatingBar ratingBar = ((RatingBar) layout.findViewById(R.id.ratingBar)); ratingBar.setProgress(Integer.parseInt(surveyBeans.get(section).get(position).getRate())); LayerDrawable stars = (LayerDrawable) ratingBar.getProgressDrawable(); stars.getDrawable(2).setColorFilter(Color.YELLOW,PorterDuff.Mode.SRC_ATOP); stars.getDrawable(1).setColorFilter(Color.RED,PorterDuff.Mode.SRC_ATOP); ((TextView) layout.findViewById(R.id.commentSurvey)).setText(surveyBeans.get(section).get(position).getComment()); return layout; }
工作代码回答@Murtaza Hussain:
RatingBar ratingBar = ((RatingBar) layout.findViewById(R.id.ratingBar)); ratingBar.setProgress(Integer.parseInt(surveyBeans.get(section).get(position).getRate())); LayerDrawable stars = (LayerDrawable) ratingBar.getProgressDrawable(); if (ratingBar.getRating()<=3) { stars.getDrawable(2).setColorFilter(Color.RED,PorterDuff.Mode.SRC_ATOP); } if(ratingBar.getRating()==4){ stars.getDrawable(2).setColorFilter(Color.YELLOW,PorterDuff.Mode.SRC_ATOP); } if(ratingBar.getRating()==5){ stars.getDrawable(2).setColorFilter(Color.GREEN,PorterDuff.Mode.SRC_ATOP); }
解决方法
RatingBar ratingBar = (RatingBar) findViewById(R.id.ratingBar); LayerDrawable stars = (LayerDrawable) ratingBar.getProgressDrawable(); stars.getDrawable(2).setColorFilter(Color.YELLOW,PorterDuff.Mode.SRC_ATOP);
要么
LayerDrawable stars = (LayerDrawable) ratingBar.getProgressDrawable(); stars.getDrawable(2).setColorFilter(getResources().getColor(R.color.starFullySelected),PorterDuff.Mode.SRC_ATOP); stars.getDrawable(1).setColorFilter(getResources().getColor(R.color.starPartiallySelected),PorterDuff.Mode.SRC_ATOP); stars.getDrawable(0).setColorFilter(getResources().getColor(R.color.starNotSelected),PorterDuff.Mode.SRC_ATOP);
你可以这样做
ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener(){ @Override public void onRatingChanged(RatingBar ratingBar,float rating,boolean fromUser) { // This event is fired when rating is changed } });
从你的代码
@Override public View getItemView(int section,ViewGroup parent) { LinearLayout layout; if (convertView == null) { LayoutInflater inflator = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); layout = (LinearLayout) inflator.inflate(R.layout.item_survey,null); } else { layout = (LinearLayout) convertView; } ((TextView) layout.findViewById(R.id.questionSurvey)).setText(surveyBeans.get(section).get(position).getQuestion()); RatingBar ratingBar = ((RatingBar) layout.findViewById(R.id.ratingBar)); ratingBar.setProgress(Integer.parseInt(surveyBeans.get(section).get(position).getRate())); if (ratingBar.getRating() == 2f) { //change color of two stars } else if (ratingBar.getRating() == 3f) { //change color of three stars } LayerDrawable stars = (LayerDrawable) ratingBar.getProgressDrawable(); stars.getDrawable(2).setColorFilter(Color.YELLOW,PorterDuff.Mode.SRC_ATOP); stars.getDrawable(1).setColorFilter(Color.RED,PorterDuff.Mode.SRC_ATOP); ((TextView) layout.findViewById(R.id.commentSurvey)).setText(surveyBeans.get(section).get(position).getComment()); return layout; }