android - Come impostare la barra di valutazione non è cliccabile e toccabile in HTC mobile


94

La mia applicazione ha barre di valutazione. Voglio impostare la barra di valutazione in modo non cliccabile e non toccabile. Per questo ho aggiunto il seguente codice nel xmlfile di ogni barra di valutazione.

Funziona su Samsung Galaxy Apollo GT-i5801. Ma non funziona nel cellulare HTC. Perché?

codice xml

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

Grazie


1
l'hai provato in codifiche come questa rating.setClickable (false);
Andro Selva

No. Ma ci sono differenze (xml e codice)?
Naresh

Non sono sicuro. Ma non l'ho ancora provato in xml. scusa
Andro Selva

Risposte:


332

Puoi anche impostare RatingBar come indicatore da xml con quanto segue:

android:isIndicator="true"

4
questa è la soluzione migliore se la stai usando nella visualizzazione elenco.
AlbertRosa

soluzione perfetta
Slobodan Antonijević

Funziona ma non puoi modificare le valutazioni. cioè android: rating = "4" non funzionerà. Sarà sempre il 5.
Vishal

@Vishal potrebbe benissimo essere il caso; molte cose cambiano in 8 anni. Non sto più lavorando su Android, ma da quello che ricordo c'era un modo in cui impostare il rating. Probabilmente dal codice invece che dall'XML.
Andy,

@ Anddy - Sono d'accordo, ho appena pubblicato il mio commento per riferimento ad altri sviluppatori. Se è necessario disabilitare la barra di valutazione con l'indicatore di valutazione su 4, dovrebbe essere qualcosa come android: rating = "4" e setOnTouchListener deve essere sovrascritto per l'indicatore.
Vishal

19

Questo è scrivere questo codice nel tuo setOnRatingBarChangeListener

ratingaddrate.setIsIndicator(true);

Aggiornare :

Puoi usare questo esempio nel tuo XML

android:isIndicator="true"

aggiungere anche questa riga al codice

ratingBar.setFocusable(false);

18

Non impostare abilitato su falso in quanto ciò oscurerà il controllo. Quello che vuoi fare è sovrascrivere l'ascoltatore on touch in questo modo:

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

Quindi in pratica intercetti il ​​tocco e non fai nulla con esso

Aggiungi anche il seguente codice per bloccare i rollover della trackball

ratingBar.setFocusable(false);

7
Anche se ho scritto questa risposta e funziona, mi piace la risposta di Andy meglio sotto
Ryan C

4
android: isIndicator = "true" è la soluzione corretta
dirkoneill

RISPOSTA SBAGLIATA. Il modo corretto è: android: isIndicator = "true" (XML) o setIsIndicator (false) // CODE
Sileria
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.