android - Cách đặt thanh Xếp hạng là không thể nhấp và có thể chạm trong điện thoại di động HTC


94

Ứng dụng của tôi có các thanh đánh giá. Tôi muốn đặt thanh Xếp hạng là không thể nhấp chuột và không thể chạm vào. Đối với điều này, tôi đã thêm mã sau vào xmltệp của mỗi thanh xếp hạng.

Nó đang hoạt động trong samsung galaxy Apollo GT-i5801. Nhưng nó không hoạt động trong điện thoại di động HTC. Tại sao?

mã xml

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

cảm ơn


1
bạn đã thử viết mã như thế này rating.setClickable (false) chưa;
Andro Selva

Không. Nhưng có bất kỳ khác biệt nào (xml và phần mã) ở đó không?
naresh

Không chắc. Nhưng tôi chưa thử nó trong xml. xin lỗi
Andro Selva

Câu trả lời:


332

Bạn cũng có thể đặt Xếp hạng làm chỉ báo từ xml với những điều sau:

android:isIndicator="true"

4
đây là giải pháp tốt nhất nếu bạn đang sử dụng điều này trong chế độ xem danh sách.
AlbertRosa

giải pháp hoàn hảo
Slobodan Antonijević

Nó hoạt động nhưng bạn không thể thay đổi xếp hạng. tức là android: rating = "4" sẽ không hoạt động. Nó sẽ luôn là 5.
Vishal

@Vishal nó rất có thể là trường hợp; rất nhiều thứ thay đổi trong 8 năm. Tôi không làm việc trên Android nữa, nhưng từ những gì tôi nhớ lại, có một cách để có thể đặt xếp hạng. Có thể là từ mã thay vì XML.
Andy

@Andy - Tôi đồng ý, tôi vừa đăng nhận xét của mình để các nhà phát triển khác tham khảo. Nếu một người cần vô hiệu hóa thanh xếp hạng có chỉ báo xếp hạng là 4, thì thanh đánh giá sẽ giống như android: rating = "4" và setOnTouchListener cần được ghi đè cho chỉ báo.
Vishal

19

Đây là nó viết mã này trong setOnRatingBarChangeListener của bạn

ratingaddrate.setIsIndicator(true);

Cập nhật:

Bạn có thể sử dụng ví dụ này trong XML của mình

android:isIndicator="true"

cũng thêm dòng này vào Mã

ratingBar.setFocusable(false);

18

Không đặt bật thành false vì điều này sẽ làm mờ điều khiển. Những gì bạn muốn làm là ghi đè trình nghe khi chạm như thế này:

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

Vì vậy, về cơ bản bạn chặn chạm và không làm gì với nó

Ngoài ra, hãy thêm mã sau để chặn việc di chuyển trackball

ratingBar.setFocusable(false);

7
Mặc dù tôi đã viết câu trả lời này và nó hoạt động, tôi như câu trả lời của Andy tốt hơn dưới đây
Ryan C

4
android: isIndicator = "true" là giải pháp thích hợp
dirkoneill

CÂU TRẢ LỜI SAI. Cách đúng là: android: isIndicator = "true" (XML) hoặc setIsIndicator (false) // CODE
Sileria
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.