Moja aplikacja ma paski oceny. Chcę ustawić pasek oceny bez możliwości klikania i dotykania. W tym celu dodałem następujący kod w xml
pliku każdego paska oceny.
Działa w Samsung Galaxy Apollo GT-i5801. Ale to nie działa w telefonie HTC. Czemu?
kod xml
android:clickable="false"
android:focusableInTouchMode="false"
android:focusable="false"
dzięki
Odpowiedzi:
Możesz również ustawić RatingBar jako wskaźnik z xml, wykonując następujące czynności:
android:isIndicator="true"
źródło
To jest napisanie tego kodu w swoim setOnRatingBarChangeListener
ratingaddrate.setIsIndicator(true);
Aktualizacja :
Możesz użyć tego przykładu w swoim XML
android:isIndicator="true"
dodaj również tę linię do kodu
ratingBar.setFocusable(false);
źródło
Nie ustawiaj Enabled na false, ponieważ spowoduje to przyciemnienie kontrolki. To, co chcesz zrobić, to zastąpić słuchacza on-touch w następujący sposób:
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; } });
Więc w zasadzie przechwytujesz dotyk i nic z nim nie robisz
Dodaj również następujący kod, aby zablokować najazdy trackballa
ratingBar.setFocusable(false);
źródło
Dodaj style = "? Android: attr / ratingBarStyleIndicator" do swojego układu
Na przykład
<RatingBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/review_star" style="?android:attr/ratingBarStyleIndicator" android:scaleX=".5" android:rating="3.5" android:scaleY=".5" android:transformPivotX="0dp" android:transformPivotY="0dp" android:max="5"/>
źródło