android – Capture RatingBar点击

我似乎有一个问题,抓住我的评级栏点击.评分栏显示正常,并具有认值.唯一的问题是我无法更改任何值,或者没有启用.我尝试了许多不同的东西(例如,在布局中启用,完全用 java构建).他们似乎都没有影响.这是我最新的评分栏.我必须做一些stooopid不能捕获的点击.

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>

先谢谢你.

克雷格

解决方法

setonClickListener()不起作用是ratingBar覆盖onTouchEvent(),从不让View处理它,所以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;
            }});

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...