Vì vậy, trong một số trạng thái nhất định trong ứng dụng của tôi, tôi muốn vô hiệu hóa một số CheckBoxPreferences nhất định trong menu cài đặt của mình. Tuy nhiên, nếu người dùng nhấp vào chúng, tôi muốn hiển thị bánh mì nướng giải thích. Nếu tôi chỉ làm setEnable (false); trên CheckBoxPreference, tôi có được giao diện phù hợp. Nhưng tôi không thể có được một bánh mì nướng được hiển thị trên nhấp chuột. Mặt khác, tôi đã thất bại trong việc tạo một CheckBoxPreference theo cách thủ công giống như nó bị vô hiệu hóa.Làm cho giao diện người dùng bị tắt nhưng vẫn đăng ký số nhấp chuột
10
A
Trả lời
18
Thay vì tắt tùy chọn, bạn cũng có thể vô hiệu hóa chế độ xem chỉ tùy chọn.
public class DisabledAppearanceCheckboxPreference extends CheckBoxPreference {
protected boolean mEnabledAppearance = false;
public DisabledAppearanceCheckboxPreference(Context context,
AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
boolean viewEnabled = isEnabled()&&mEnabledAppearance;
enableView(view, viewEnabled);
}
protected void enableView(View view, boolean enabled){
view.setEnabled(enabled);
if (view instanceof ViewGroup){
ViewGroup grp = (ViewGroup)view;
for (int index = 0; index < grp.getChildCount(); index++)
enableView(grp.getChildAt(index), enabled);
}
}
public void setEnabledAppearance(boolean enabled){
mEnabledAppearance = enabled;
notifyChanged();
}
@Override
protected void onClick() {
if (mEnabledAppearance)
super.onClick();
else{
// show your toast here
}
}
}
0
Thậm chí nếu sở thích của bạn bị vô hiệu hóa, bạn có thể nhận OnTouchEvents:
public class MyPreferenceFragment extends PreferenceFragment {
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
final ListView listView = (ListView) view.findViewById(android.R.id.list);
listView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
int position = listView.pointToPosition((int) event.getX(), (int) event.getY());
ListAdapter adapter = listView.getAdapter();
Preference preference = (Preference) adapter.getItem(position);
if (!preference.isEnabled())
Toast.makeText(getActivity(), "Sorry, this setting is not available!", Toast.LENGTH_LONG).show();
return false;
}
});
return view;
}
...
}
Các vấn đề liên quan
- 1. Cách tắt đăng ký giao diện người dùng trong Magento
- 2. Flex: Kiểm tra các thành phần giao diện người dùng ở cấp nhấp chuột?
- 3. Làm mới nội dung tab khi nhấp chuột trong các tab Giao diện người dùng JQuery
- 4. Hiệu ứng trả lại jQuery khi nhấp chuột không có giao diện người dùng jQuery
- 5. Giao diện người dùng JQuery: Tắt tab accordion?
- 6. API giao diện người dùng cho libgdx
- 7. Android - Yếu tố giao diện người dùng tắt màn hình
- 8. Nút chuyển đổi giao diện người dùng Jquery (hộp kiểm) nhấp/kéo lỗi
- 9. Đăng dữ liệu Tab giao diện người dùng JQuery 1.10
- 10. Tải thử nghiệm giao diện người dùng
- 11. Đăng ký người dùng CouchApp
- 12. Tạo thư viện giao diện người dùng Android có giao diện người dùng tùy chỉnh
- 13. Xử lý nhấp chuột vào nút "Đăng ký" của Facebook
- 14. Phát triển giao diện người dùng giao diện người dùng - WPF
- 15. Giao diện người dùng JQuery Tabs caching
- 16. Đăng ký jQuery nhấp chuột, đầu tiên và thứ hai nhấp chuột
- 17. Android ImageButton với giao diện người dùng bị vô hiệu hóa cảm thấy
- 18. Kiểm tra giao diện người dùng
- 19. Giao diện người dùng khởi động Github? Hoặc mẫu giao diện người dùng giống như github
- 20. Giao diện người dùng Kendo và giao diện người dùng jQuery - kích thước và khung javascript
- 21. Unity: Đăng ký cùng loại cho hai giao diện
- 22. JS góc cho giao diện người dùng trò chơi
- 23. Thiết kế giao diện người dùng Android
- 24. Đa luồng trong JavaFX treo giao diện người dùng
- 25. Điều khiển giao diện người dùng cho Win32
- 26. GTK + kiểm tra giao diện người dùng
- 27. Cách làm mới lưới giao diện người dùng Kendo
- 28. RẮN và giao diện người dùng?
- 29. Kiểm tra đơn vị Android với giải pháp cập nhật giao diện người dùng AsyncTask và giao diện người dùng
- 30. Ngày giao diện người dùng mặc định jQuery-UI
giải pháp sáng tạo và gọn gàng, cảm ơn bạn! – pgsandstrom