android - Cara menyetel bilah Peringkat tidak dapat diklik dan dapat disentuh di ponsel HTC

95

Aplikasi saya memiliki bilah peringkat. Saya ingin mengatur bilah Peringkat tidak dapat diklik dan tidak dapat disentuh. Untuk ini saya menambahkan kode berikut di xmlfile dari setiap bar peringkat.

Ini bekerja di samsung galaxy Apollo GT-i5801. Tapi itu tidak berfungsi di ponsel HTC. Mengapa?

kode xml

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

Terima kasih

naresh
sumber
1
sudahkah Anda mencobanya dalam pengkodean seperti ini rating.setClickable (false);
Andro Selva
Tidak. Tapi apakah ada diff (xml dan bagian kode) yang ada?
naresh
Tidak yakin. Tapi saya belum mencobanya dalam xml. maaf
Andro Selva

Jawaban:

333

Anda juga dapat mengatur RatingBar sebagai indikator dari xml dengan yang berikut:

android:isIndicator="true"
Andy
sumber
4
ini adalah solusi terbaik jika Anda menggunakan ini dalam tampilan daftar.
AlbertRosa
solusi sempurna
Slobodan Antonijević
Ini berfungsi tetapi Anda tidak dapat mengubah peringkat. yaitu android: rating = "4" tidak akan berfungsi. Ini akan selalu 5.
Vishal
@Vishal mungkin saja demikian; banyak hal berubah dalam 8 tahun. Saya tidak lagi bekerja di Android, tetapi dari yang saya ingat ada cara untuk menetapkan peringkat. Mungkin dari kode, bukan XML.
Andy
@Andy - Saya setuju, saya baru saja memposting komentar saya untuk referensi pengembang lain. Jika seseorang perlu menonaktifkan bilah peringkat dengan indikator peringkat sebagai 4, maka itu harus seperti android: rating = "4" dan setOnTouchListener perlu diganti untuk indikator tersebut.
Vishal
20

Ini dia tulis kode ini di setOnRatingBarChangeListener Anda

ratingaddrate.setIsIndicator(true);

Pembaruan:

Anda dapat menggunakan contoh ini di XML Anda

android:isIndicator="true"

juga tambahkan baris ini ke Kode

ratingBar.setFocusable(false);
alireza amini
sumber
18

Jangan setel enabled ke false karena ini akan meredupkan kontrol. Yang ingin Anda lakukan adalah mengganti pendengar yang sedang disentuh seperti ini:

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

Jadi pada dasarnya Anda mencegat sentuhan dan tidak melakukan apa pun dengannya

Tambahkan juga kode berikut untuk memblokir rollover trackball

ratingBar.setFocusable(false);
Ryan C.
sumber
7
Meskipun saya menulis jawaban ini dan berhasil, saya lebih menyukai jawaban Andy di bawah ini
Ryan C
4
android: isIndicator = "true" adalah solusi yang tepat
dirkoneill
JAWABAN YANG SALAH. Cara yang benar adalah: android: isIndicator = "true" (XML) atau setIsIndicator (false) // CODE
Sileria
0

Tambahkan style = "? Android: attr / ratingBarStyleIndicator" ke dalam tata letak Anda
Misalnya

<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"/>
Infomaster
sumber