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


94

我的应用程序有等级栏。我要设置评分栏为不可点击且不可触摸。为此,我在xml每个等级栏的文件中添加了以下代码。

它正在三星银河Apollo GT-i5801中工作。但它不能在HTC mobile中使用。为什么?

xml代码

android:clickable="false"     
android:focusableInTouchMode="false"    
android:focusable="false"

谢谢


1
您是否尝试过以这种等级进行编码?setClickable(false);
安德罗·塞尔瓦

否。但是是否有任何差异(xml和代码部分)?
2011年

不确定。但是我还没有在xml中尝试过。抱歉
Andro Selva

Answers:


332

您还可以使用以下命令从XML中将RatingBar设置为指示器:

android:isIndicator="true"

4
如果您在列表视图中使用此方法,则这是最佳解决方案。
AlbertRosa 2012年

完美的解决方案
SlobodanAntonijević19年

它有效,但是您不能更改评级。即android:rating =“ 4”将不起作用。它永远是5
维沙尔

@Vishal很可能是这种情况;8年后,很多事情发生了变化。我不再使用Android,但是从我的回忆中可以找到一种可以设置等级的方法。可能来自代码而不是XML。
安迪

@Andy-我同意,我刚刚发表了自己的评论,供其他开发人员参考。如果需要禁用等级指示器为4的等级栏,则应为android:rating =“ 4”,并且setOnTouchListener必须覆盖指示器。
维沙尔

19

这是在您的setOnRatingBarChangeListener中编写此代码

ratingaddrate.setIsIndicator(true);

更新:

您可以在XML中使用此示例

android:isIndicator="true"

将此行添加到代码中

ratingBar.setFocusable(false);

18

不要将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;
        }
    });

因此,基本上,您会截获触摸并对其不执行任何操作

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

ratingBar.setFocusable(false);

7
虽然我写了这个答案,它的作品,我喜欢安迪的回答更好低于
瑞安ç

4
android:isIndicator =“ true”是正确的解决方案
dirkoneill 2013年

错误的答案。正确的方式是:android:isIndicator =“ true”(XML)或setIsIndicator(false)//代码
Sileria
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.