android - Derecelendirme çubuğu, HTC mobil cihazda tıklanamaz ve dokunulabilir


95

Uygulamamın derecelendirme çubukları var. Derecelendirme çubuğunu tıklanamaz ve dokunulamaz olarak ayarlamak istiyorum. Bunun için xmlher bir derecelendirme çubuğunun dosyasına aşağıdaki kodu ekledim .

Samsung galaxy Apollo GT-i5801'de çalışıyor. Ancak HTC cep telefonunda çalışmıyor. Neden?

xml kodu

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

Teşekkürler


1
bu rating.setClickable (false) gibi kodlamada denediniz mi;
Andro Selva

Hayır. Ancak herhangi bir fark (xml ve kod parçası) var mı?
naresh

Emin değil. Ama henüz xml'de denemedim. üzgünüm
Andro Selva

Yanıtlar:


334

Ayrıca RatingBar'ı xml'den gösterge olarak aşağıdaki gibi ayarlayabilirsiniz:

android:isIndicator="true"

4
Bunu liste görünümünde kullanıyorsanız en iyi çözüm budur.
AlbertRosa

mükemmel çözüm
Slobodan Antonijević

Çalışır, ancak derecelendirmeleri değiştiremezsiniz. yani android: rating = "4" çalışmayacaktır. Her zaman 5 olacaktır.
Vishal

@Vishal çok iyi durumda olabilir; 8 yılda çok şey değişir. Artık Android üzerinde çalışmıyorum, ancak hatırladığım kadarıyla derecelendirmenin ayarlanabileceği bir yol vardı. Muhtemelen XML yerine koddan.
Andy

@Andy - Kabul ediyorum, diğer geliştiricilerin referansı için yorumumu yeni yayınladım. Derecelendirme göstergesi 4 olan derecelendirme çubuğunun devre dışı bırakılması gerekiyorsa, android: rating = "4" gibi bir şey olmalı ve gösterge için setOnTouchListener geçersiz kılınmalıdır.
Vishal

20

Bu, bu kodu setOnRatingBarChangeListener cihazınıza yazın

ratingaddrate.setIsIndicator(true);

Güncelleme :

Bu örneği XML'inizde kullanabilirsiniz

android:isIndicator="true"

Ayrıca eklemek bu satırı Kodu

ratingBar.setFocusable(false);

18

Denetimi karartacağından etkin olarak ayarlamayın. Yapmak istediğiniz, dokunmatik dinleyiciyi şu şekilde geçersiz kılmaktır:

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

Yani temelde dokunuşu kesiyorsunuz ve onunla hiçbir şey yapmıyorsunuz

Ayrıca izleme topu rollover'larını engellemek için aşağıdaki kodu da ekleyin

ratingBar.setFocusable(false);

7
Bu cevabı yazmış olsam ve işe yarıyor olsa da, Andy'nin cevabını aşağıda daha çok seviyorum
Ryan C

4
android: isIndicator = "true" doğru çözüm
dirkoneill

YANLIŞ CEVAP. Doğru yol: android: isIndicator = "true" (XML) veya setIsIndicator (false) // CODE
Sileria

0

Ekle = tarzı "android:? Attr / ratingBarStyleIndicator" Düzeninize içine
Örneğin

<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"/>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.