Uygulamamdaki belirli durumlar sırasında, ayar menüsümde belirli CheckBoxPreferences'ı devre dışı bırakmak istiyorum. Ancak, kullanıcı bunları tıklarsa, açıklayıcı bir tost gösterilmesini istiyorum. Ben sadece setEnable (false) yaparsam; CheckBoxPreference üzerinde, doğru görünüm ve his elde ediyorum. Ama tıklamayla gösterilecek bir tost alamıyorum. Öte yandan, CheckBoxPreference'ın el ile devre dışı bırakılmış gibi görünmesini sağlayamadım.Make Preference (Görünüm Tercihi) devre dışı bırakıldı, ancak yine de tıklamaları kaydetmeye devam ediyor
10
A
cevap
18
Tercihi devre dışı bırakmak yerine, yalnızca tercihlerin görünümlerini devre dışı bırakabilirsiniz.
Tercihiniz devre dışı olsa bilepublic 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
, sen OnTouchEvents alabilir:
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;
}
...
}
İlgili konular
- 1. NSTextView: Tek tıklamaları nasıl devre dışı bırakabilir, ancak yine de kopyalayıp yapıştırma seçimine nasıl izin verilir?
- 2. Devre dışı bırakıldı TabBarItem
- 3. Devre dışı bırakılan bağlantılar devre dışı bırakıldı
- 4. Eklenti 'FEDERATED' devre dışı bırakıldı
- 5. Reaktif - Servis kullanıcısı devre dışı bırakıldı
- 6. DLTK İndeksleme devam ediyor
- 7. Devre Dışı hızlı görünüm
- 8. ddms öykünücüsü denetimi devre dışı bırakıldı
- 9. WebBrowser denetimleri donmaya devam ediyor, ancak IE
- 10. menü öğesi etkin, ancak yine de grileştirildi
- 11. RTTI değil, yine de sanal yöntemler
- 12. ZF2'de düzen ve görünüm oluşturucu nasıl devre dışı bırakılır?
- 13. Düz metin şifreleri devre dışı bırakıldı NetBios uzaktan bağlantı
- 14. App Store ve Ad Hoc devre dışı bırakıldı
- 15. Delphi XE özel yapı hedefi her zaman devre dışı bırakıldı
- 16. Windows 8'de portre modunu nasıl devre dışı bırakabilirim?
- 17. Visual Studio "Çözüm Gezgini Gezgini" devre dışı bırakıldı
- 18. Ember - Görünüm dışındaki tıklamaları ele alma
- 19. Arama Cihazlardaki Ağaç bölümü devre dışı bırakıldı (grileştirildi)
- 20. Referansım için Yerel Kopyalama özelliği neden devre dışı bırakıldı?
- 21. Gönder ve Validade düğmesi arşivde devre dışı bırakıldı
- 22. Ardışık bekletme Devam devam ediyor Devam bekliyor
- 23. sql yedekleme dosyası ve dosya grupları seçenekleri devre dışı bırakıldı
- 24. ASP.Net MVC Devam Ediyor İlerleme Göstergesi
- 25. Android WebView/WebViewClient Devre Dışı Bırakıldı favicon.ico İstek
- 26. Komodo Edit devre dışı autocomple
- 27. Kök ayrıcalıklarını düşürme ve yine de kümelenmeler oluşturmaya devam et
- 28. Materialize css daraltılabilir hale getirme devre dışı bırakıldı
- 29. Android ListViewSergi görünümünde tıklamaları ve içerik menüsünü devre dışı bırak?
- 30. GLES20Canvas.clip içinde desteklenmeyenOperationException Donanım hızlandırması devre dışı bırakıldı görünümünde
yaratıcı ve düzgün bir çözüm, teşekkür ederim! – pgsandstrom