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


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"

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

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.