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


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"

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

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

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"/>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.