android - 如何在HTC mobile中设置评级栏是不可点击和可触摸的

nar*_*esh 89 android ratingbar

我的申请有评级栏.我想设置评级栏是不可点击和不可触摸的.为此,我在xml每个评级栏的文件中添加了以下代码.

它在三星galaxy Apollo GT-i5801中工作.但它不适用于HTC手机.为什么?

xml代码

android:clickable="false"     
android:focusableInTouchMode="false"    
android:focusable="false"
Run Code Online (Sandbox Code Playgroud)

谢谢

And*_*ndy 320

您还可以使用以下命令将RatingBar设置为xml中的指示符:

android:isIndicator="true"
Run Code Online (Sandbox Code Playgroud)

  • 如果您在列表视图中使用它,这是最佳解决方案. (4认同)

Rya*_*n C 16

不要将enabled设置为false,因为这会使控件变暗.你想要做的是覆盖这样的触摸监听器:

import android.view.View.OnTouchListener;

RatingBar ratingBar = (RatingBar)findViewById(R.id.ratingBar);
ratingBar.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            return true;
        }
    });
Run Code Online (Sandbox Code Playgroud)

所以基本上你拦截触摸并且不做任何事情

还要添加以下代码以阻止轨迹球翻转

ratingBar.setFocusable(false);
Run Code Online (Sandbox Code Playgroud)

  • 尽管我写了这个答案并且它有效,但我更喜欢Andy的答案 (7认同)
  • android:isIndicator ="true"是正确的解决方案 (4认同)

ali*_*ini 16

这是在setOnRatingBarChangeListener中编写此代码

ratingaddrate.setIsIndicator(true);
Run Code Online (Sandbox Code Playgroud)

更新:

您可以在XML中使用此示例

android:isIndicator="true"
Run Code Online (Sandbox Code Playgroud)

将此行添加到代码中

ratingBar.setFocusable(false);
Run Code Online (Sandbox Code Playgroud)