android-HTCモバイルで評価バーを設定する方法はクリックおよびタッチ不可です


94

私のアプリケーションには評価バーがあります。評価バーを、クリック不可でタッチ不可に設定したいと思います。このためにxml、各評価バーのファイルに次のコードを追加しました。

サムスン銀河アポロGT-i5801で働いています。ただし、HTCモバイルでは機能しません。どうして?

xmlコード

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

ありがとう


1
このrating.setClickable(false);のようなコーディングで試しましたか。
Andro Selva

いいえ。でも、diff(xmlとコード部分)はありますか?
naresh

わからない。しかし、私はまだそれをxmlで試していません。申し訳ありません
Andro Selva

回答:


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をオーバーライドする必要があります。
Vishal

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
私はこの答えを書いてそれが機能したとしても、私は以下のアンディの答えが好きです
ライアンC

4
android:isIndicator = "true"が適切な解決策です
dirkoneill

間違った答え。正しい方法は次のとおりです:android:isIndicator = "true"(XML)またはsetIsIndicator(false)// CODE
Sileria
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.