android – Capture RatingBar点击

前端之家收集整理的这篇文章主要介绍了android – Capture RatingBar点击前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我似乎有一个问题,抓住我的评级栏点击.评分栏显示正常,并具有默认值.唯一的问题是我无法更改任何值,或者没有启用.我尝试了许多不同的东西(例如,在布局中启用,完全用 java构建).他们似乎都没有影响.这是我最新的评分栏.我必须做一些stooopid不能捕获的点击.

Java代码

  1. RatingBar showRatingBar = (RatingBar) findViewById(R.id.showRatingBar);
  2. showRatingBar.setEnabled(true);
  3. showRatingBar.setClickable(true);
  4. showRatingBar.setRating(0);
  5. showRatingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener(){
  6. @Override
  7. public void onRatingChanged(RatingBar ratingBar,float rating,boolean fromUser) {
  8. System.out.println("showRating.buildRatingBar: " +rating);
  9. ratingBar.setRating(rating);
  10.  
  11. }});
  12. showRatingBar.refreshDrawableState();

布局:

  1. <LinearLayout
  2. android:layout_width="match_parent"
  3. android:layout_height="wrap_content" >
  4.  
  5. <TextView
  6. android:id="@+id/showQualityLabel"
  7. android:layout_width="100dp"
  8. android:layout_height="wrap_content"
  9. android:text="@string/show_rating_label"
  10. android:textAppearance="?android:attr/textAppearanceMedium"
  11. android:textColor="#E6E6E6"
  12. android:textSize="12sp" />
  13.  
  14. <RatingBar
  15. android:id="@+id/showRatingBar"
  16. style="?android:attr/ratingBarStyleSmall"
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:max="5"
  20. android:numStars="5"
  21. android:rating="0"
  22. android:stepSize="1"/>
  23. </LinearLayout>

先谢谢你.

克雷格

解决方法

setOnClickListener()不起作用是RatingBar覆盖onTouchEvent(),从不让View处理它,所以View#performClick()从未被调用(这将调用OnClickListener).

来自RatingBar并覆盖onTouchEvent()

  1. ratingBar.setOnTouchListener(new OnTouchListener() {
  2. @Override
  3. public boolean onTouch(View v,MotionEvent event) {
  4. if (event.getAction() == MotionEvent.ACTION_UP) {
  5. float touchPositionX = event.getX();
  6. float width = ratingBar.getWidth();
  7. float starsf = (touchPositionX / width) * 5.0f;
  8. int stars = (int)starsf + 1;
  9. ratingBar.setRating(stars);
  10.  
  11. Toast.makeText(MainActivity.this,String.valueOf("test"),Toast.LENGTH_SHORT).show();
  12. v.setPressed(false);
  13. }
  14. if (event.getAction() == MotionEvent.ACTION_DOWN) {
  15. v.setPressed(true);
  16. }
  17.  
  18. if (event.getAction() == MotionEvent.ACTION_CANCEL) {
  19. v.setPressed(false);
  20. }
  21.  
  22.  
  23.  
  24.  
  25. return true;
  26. }});

猜你在找的Android相关文章