Por lo tanto, durante ciertos estados de mi aplicación, deseo deshabilitar ciertas CheckBoxPreferences en mi menú de configuración. Sin embargo, si el usuario hace clic en ellos, quiero que se muestre un brindis explicativo. Si solo hago setEnable (falso); en CheckBoxPreference, obtengo el aspecto y la sensación correctos. Pero no puedo brindar por el clic. Por otro lado, no he podido hacer que parezca que CheckBoxPreference está deshabilitado.Hacer que la preferencia parezca deshabilitada, pero aún registrar clics
10
A
Respuesta
18
En lugar de deshabilitar la preferencia, también puede deshabilitar las vistas de la preferencia solamente.
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
Incluso si su preferencia es desactivado, puede recibir 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;
}
...
}
Cuestiones relacionadas
- 1. ¿Puedo hacer que un botón parezca deshabilitado y sigo escuchando los clics?
- 2. Diseña un botón para que parezca un EditText (pero aún así te comportes como un botón)
- 3. ¿Cómo hacer que html parezca deshabilitado?
- 4. Cómo hacer IvParameterSpec aleatorio pero aún descifrar
- 5. Hacer que un campo de entrada de texto parezca deshabilitado, pero actuar como solo
- 6. ¿Ganar formularios, registrar todos los clics?
- 7. Hacer que Tk parezca una aplicación nativa de Linux
- 8. ¿Cómo hacer que múltiples divs se muestren en una línea pero que aún conserven el ancho?
- 9. ¿Cómo puedo hacer que LWP :: UserAgent parezca tener Flash instalado?
- 10. ¿Cómo puedo hacer que un TextView parezca un botón?
- 11. ¿Cómo puedo hacer que mi mostrador parezca menos falso?
- 12. Cómo hacer lo contrario al atributo de preferencia android: ¿dependencia?
- 13. Preferencias que se habilitan dependiendo de otra Preferencia
- 14. ¿Cómo hacer que DataGridCheckBoxColumn sea editable sin requerir clics adicionales?
- 15. Formato TextView para que parezca un enlace
- 16. Hacer que la actividad de Android se parezca al cuadro de diálogo
- 17. La mejor manera de Android para hacer que el carrete parezca girar
- 18. Preferencia de tienda Eclipse Preferencia
- 19. biblioteca estática, pero aún necesito encabezados?
- 20. ¿Cómo puedo hacer que mi aplicación web sea sin estado y aún así hacer algo útil?
- 21. advertencia mcrypt pero aún descifra los datos
- 22. registrar los movimientos del mouse, los clics y la entrada del teclado con Java o C++
- 23. Cómo hacer que una actividad de preferencia inicie un cuadro de diálogo para establecer una preferencia personalizada
- 24. rspec 2: detecta la llamada al método pero aún así tiene que realizar su función
- 25. ¿Cómo hacer que Gedit se parezca a un compañero de texto?
- 26. ¿Cómo hacer que Java se parezca a los programas de Windows?
- 27. Agregar la opción deshabilitada en codeigniter form_dropdown
- 28. Ayuda para hacer que una gran subtrama parezca más clara y más clara
- 29. No hacer una copia de seguridad en iCloud pero aún así rechazado
- 30. Esquema XML: ¿Puedo hacer que algunos de los valores de un atributo sean necesarios pero aún así permitir otros valores?
solución creativa y ordenada, gracias! – pgsandstrom