android - Das Einstellen der Bewertungsleiste ist in HTC Mobile nicht anklickbar und berührbar

94

Meine Bewerbung hat Bewertungsbalken. Ich möchte festlegen, dass die Bewertungsleiste nicht klickbar und nicht berührbar ist. Dazu habe ich den folgenden Code in die xmlDatei jeder Bewertungsleiste eingefügt .

Es funktioniert in der Samsung-Galaxie Apollo GT-i5801. Aber es funktioniert nicht im HTC Mobile. Warum?

XML-Code

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

Vielen Dank

Naresh
quelle
1
Haben Sie es bei der Codierung wie dieser versucht? setClickable (false);
Andro Selva
Nein. Aber gibt es einen Unterschied (XML- und Codeteil)?
Naresh
Nicht sicher. Aber ich habe es noch nicht in XML versucht. Entschuldigung
Andro Selva

Antworten:

332

Sie können die Bewertungsleiste auch als Indikator aus der XML-Datei wie folgt festlegen:

android:isIndicator="true"
Andy
quelle
4
Dies ist die beste Lösung, wenn Sie dies in der Listenansicht verwenden.
AlbertRosa
perfekte Lösung
Slobodan Antonijević
Es funktioniert, aber Sie können die Bewertungen nicht ändern. dh Android: Bewertung = "4" wird nicht funktionieren. Es wird immer 5 sein.
Vishal
@ Vishal es kann sehr gut der Fall sein; In 8 Jahren ändern sich viele Dinge. Ich arbeite nicht mehr an Android, aber soweit ich mich erinnere, gab es eine Möglichkeit, die Bewertung festzulegen. Wahrscheinlich aus Code anstelle von XML.
Andy
@Andy - Ich stimme zu, ich habe gerade meinen Kommentar als Referenz für andere Entwickler veröffentlicht. Wenn man die Bewertungsleiste mit dem Bewertungsindikator 4 deaktivieren muss, sollte es so etwas wie Android sein: Bewertung = "4" und setOnTouchListener muss für den Indikator überschrieben werden.
Vishal
19

Dies ist, schreiben Sie diesen Code in Ihren setOnRatingBarChangeListener

ratingaddrate.setIsIndicator(true);

Update:

Sie können dieses Beispiel in Ihrem XML verwenden

android:isIndicator="true"

Fügen Sie diese Zeile auch dem Code hinzu

ratingBar.setFocusable(false);
Alireza Amini
quelle
18

Setzen Sie enable nicht auf false, da dies das Steuerelement dimmt. Was Sie tun möchten, ist, den On-Touch-Listener wie folgt zu überschreiben:

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;
        }
    });

Im Grunde genommen fangen Sie die Berührung ab und tun nichts damit

Fügen Sie auch den folgenden Code hinzu, um Trackball-Rollover zu blockieren

ratingBar.setFocusable(false);
Ryan C.
quelle
7
Obwohl ich diese Antwort geschrieben habe und sie funktioniert, gefällt mir Andys Antwort unten besser
Ryan C
4
android: isIndicator = "true" ist die richtige Lösung
dirkoneill
FALSCHE ANTWORT. Der richtige Weg ist: android: isIndicator = "true" (XML) oder setIsIndicator (false) // CODE
Sileria