RatingBar无法点击

时间:2016-05-01 06:36:40

标签: java android onclick touch ratingbar

我正在尝试在我的应用中添加评级栏,以便可以对问题对象进行评分。

这是评级栏的XML版本:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="match_parent">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="Question: "
            android:textSize="20sp"
            android:gravity="center"/>

        <EditText
            android:id="@+id/fragment_question_string"
            android:layout_width="0sp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:hint="New question"/>

    </LinearLayout>

    <RatingBar
        android:id="@+id/fragment_question_rating_bar"
        style="@style/Base.Widget.AppCompat.RatingBar.Small"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clickable="true"/>

</LinearLayout>

这里是我的代码的一部分,我在片段的onCreateView(LayoutInflater,View,Bundle)方法中使用RatingBar

RatingBar mRatingBar = (RatingBar) v.findViewById(R.id.fragment_question_rating_bar);
mRatingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
        @Override
        public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
            int r = (int) rating;

            try {
                mQuestion.rateQuestion(r);
            } catch (IllegalRatingValue illegalRatingValue) {
                illegalRatingValue.printStackTrace();
            }
        }
    });

问题是评级栏只是不可点击。当我尝试对问题进行评分时,它并没有改变星星的数量。它看起来就像一个图像,因为它不会对触摸做出反应。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我已经使用这些步骤来按用户评分。

in xml

       <RatingBar
        android:id="@+id/ratingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:numStars="5"
        android:stepSize=".5"
        android:layout_gravity="center_vertical"
        android:progressTint="@color/grey"
        android:progressBackgroundTint="@color/grey"
        android:secondaryProgressTint="@color/grey"
        android:rating="0.0" />

在活动中

RatingBar ratingBar =(ratingBar)findViewById(R.id.ratingBar);

浮动评级= ratingBar.getRating();

答案 1 :(得分:0)

尽管您的代码没有反映出来,但有时由于android:isIndicator="true"可能导致此问题。如果您希望用户能够更改评分,请删除此条目。

将指标明确设置为true意味着用户将无法对其进行更改。即使您已实现new RatingBar.OnRatingBarChangedListener()onRatingChanged()方法也不会触发。