我似乎在捕捉我的评价栏点击时遇到了问题。评级栏显示得很好,并且具有默认值。唯一的问题是我不能更改任何值,或者它没有被启用。我尝试了许多不同的方法(例如在布局中启用,完全在java中构建)。它们似乎都没有产生影响。这是我的收视率栏的最新版本。我一定是做了什么傻事才不能捕捉到点击。
Java代码:
RatingBar showRatingBar = (RatingBar) findViewById(R.id.showRatingBar);
showRatingBar.setEnabled(true);
showRatingBar.setClickable(true);
showRatingBar.setRating(0);
showRatingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener(){
@Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
System.out.println("showRating.buildRatingBar: " +rating);
ratingBar.setRating(rating);
}});
showRatingBar.refreshDrawableState();布局:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/showQualityLabel"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="@string/show_rating_label"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#E6E6E6"
android:textSize="12sp" />
<RatingBar
android:id="@+id/showRatingBar"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="5"
android:numStars="5"
android:rating="0"
android:stepSize="1"/>
</LinearLayout>提前谢谢你。
克雷格
发布于 2012-11-24 05:12:33
setOnClickListener()不起作用的原因是RatingBar覆盖了onTouchEvent()并且从不让视图处理它,因此View#performClick()永远不会被调用(它将调用OnClickListener)。
从RatingBar派生并重写onTouchEvent()
ratingBar.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
float touchPositionX = event.getX();
float width = ratingBar.getWidth();
float starsf = (touchPositionX / width) * 5.0f;
int stars = (int)starsf + 1;
ratingBar.setRating(stars);
Toast.makeText(MainActivity.this, String.valueOf("test"), Toast.LENGTH_SHORT).show();
v.setPressed(false);
}
if (event.getAction() == MotionEvent.ACTION_DOWN) {
v.setPressed(true);
}
if (event.getAction() == MotionEvent.ACTION_CANCEL) {
v.setPressed(false);
}
return true;
}});https://stackoverflow.com/questions/13535640
复制相似问题