So während bestimmter Zustände in meiner App, ich möchte bestimmte CheckBoxPreferences in meinem Einstellungsmenü deaktivieren. Wenn der Benutzer sie jedoch anklickt, möchte ich einen erläuternden Toast anzeigen. Wenn ich nur setEnable (false); Auf der CheckBoxPreference bekomme ich das richtige Aussehen und Gefühl. Aber ich kann keinen Toast bekommen, der beim Klicken angezeigt wird. Auf der anderen Seite habe ich es versäumt, CheckBoxPreference so aussehen zu lassen, als ob sie deaktiviert wäre.Lassen Präferenz aussehen deaktiviert, aber immer noch Klicks registrieren
10
A
Antwort
18
Anstatt die Einstellung zu deaktivieren, können Sie auch nur die Ansichten der Einstellung deaktivieren.
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
Auch wenn Ihre Präferenz deaktiviert, Sie OnTouchEvents empfangen können:
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;
}
...
}
Verwandte Themen
- 1. ViewStateMode Deaktiviert, aber immer noch ViewState-Element
- 2. Keine RTTI, aber immer noch virtuelle Methoden
- 3. Präferenz-Aussehen ähnlich Finder, Safari und Mail
- 4. Kann ich eine Schaltfläche deaktiviert erscheinen lassen und trotzdem auf Klicks warten?
- 5. Benutzerzuordnung hinzugefügt, aber immer noch "undefinierte Methode"
- 6. TypeScript kompiliert, aber immer noch intellisense Fehler
- 7. Entitätsframework: Migration gelöscht, aber immer noch implementiert
- 8. Aktualisiert Git aber immer noch alte Version
- 9. Nicht korrekt gedruckt, aber immer noch
- 10. escapeshellarg() wurde aus Sicherheitsgründen deaktiviert. Hinzugefügt ‚@‘ immer noch nicht
- 11. rails button_to: deaktiviert => true zeigt immer noch die Schaltfläche
- 12. App-Transport-Sicherheit deaktiviert und immer noch SSL Handshake Fehler
- 13. Warum lassen Browser JavaScript immer noch Cookies anzeigen?
- 14. Deaktivieren Submit-Taste, aber immer noch doppelte unterwirft
- 15. jQuery-UI resizable deaktiviert ist wahr, aber Griffe zeigt noch
- 16. Wie man eine UITableViewCell deaktiviert, aber immer noch Interaktionen mit Zubehöransichten hat (zB UISwitch)
- 17. TextView klicken deaktiviert und versteckt, aber immer noch klicken funktioniert Android
- 18. Lassen Sie SourceViewerDecorationSupport verschiedene Präferenz speichern für CharacterPairMatcher
- 19. Homebutton überschrieben, aber immer noch beendet, wenn Optionsmenü geöffnet ist
- 20. Deaktivieren Sie eine WPF-Schaltfläche, aber schlucken Sie immer noch die Klickereignisse
- 21. Input-Tag hat Wert, aber immer noch leer
- 22. Wie kann ich eine Android-Textansicht so aussehen lassen, als ob sie deaktiviert wäre?
- 23. Wie lassen sich meine TextViews anders aussehen?
- 24. PyCharm "aussehen" lassen wie erhabener Text
- 25. Wie Abschnitte in Xpages so aussehen lassen
- 26. Farbverlaufsrahmen wie eine Linie aussehen lassen
- 27. javafx CheckBoxTableCell immer deaktiviert
- 28. ng-disabled auf einem Anchor-Tag funktioniert, aber das Tag ist immer noch anklickbar
- 29. Android Listview, wenn Artikel Fokussierbare sind, deaktiviert Klicks
- 30. Zieloption ist im Eclipse-Fenster deaktiviert-> Präferenz-> Android
kreative und saubere Lösung, danke! – pgsandstrom