android - Як встановити рейтинг в мобільному HTC не можна натискати і торкатися


94

У моїй програмі є рейтингові смуги. Я хочу встановити, що рейтингова панель не може натискати та не торкатися. Для цього я додав наступний код у xmlфайл кожного рейтингового рядка.

Він працює в Samsung Galaxy Apollo GT-i5801. Але це не працює в мобільному телефоні HTC. Чому?

код XML

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

Дякую


1
ви пробували це в кодуванні, як це rating.setClickable (false);
Андро Сельва,

Ні. Але чи існує якась різниця (xml та частина коду)?
naresh

Не впевнений. Але я ще не пробував у xml. вибачте
Андро Сельва

Відповіді:


332

Ви також можете встановити RatingBar як індикатор із xml із наступним:

android:isIndicator="true"

4
це найкраще рішення, якщо ви використовуєте це у поданні списку.
AlbertRosa

ідеальне рішення
Слободан Антонієвич

Це працює, але ви не можете змінити рейтинги. тобто android: rating = "4" не буде працювати. Завжди буде 5.
Вішаль,

@Vishal цілком може бути так; багато чого змінюється за 8 років. Я вже не працюю на Android, але, наскільки я пам’ятаю, існував спосіб, яким можна було б встановити рейтинг. Можливо, з коду замість XML.
Енді,

@Andy - Я згоден, я щойно розмістив свій коментар для довідки інших розробників. Якщо потрібно відключити рейтингову смугу з індикатором рейтингу як 4, то це має бути щось на зразок android: rating = "4" і setOnTouchListener потрібно замінити для показника.
Вішаль

19

Це він пише цей код у вашому setOnRatingBarChangeListener

ratingaddrate.setIsIndicator(true);

Оновлення:

Ви можете використовувати цей приклад у своєму XML

android:isIndicator="true"

також додайте цей рядок до Кодексу

ratingBar.setFocusable(false);

18

Не встановлюйте значення false для false, оскільки це призведе до затемнення елемента керування. Що ви хочете зробити, це перевизначити слухача на дотик таким чином:

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

Отже, ви в основному перехоплюєте дотик і нічого з ним не робите

Також додайте наступний код, щоб блокувати перекидання трекболу

ratingBar.setFocusable(false);

7
Незважаючи на те, що я написав цю відповідь, і вона працює, мені відповідь Енді більше подобається нижче
Райан С

4
android: isIndicator = "true" є правильним рішенням
dirkoneill

НЕПРАВИЛЬНУ ВІДПОВІДЬ. Правильний спосіб: android: isIndicator = "true" (XML) або setIsIndicator (false) // КОД
Sileria
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.