studio quitar parte ocultar notificaciones navegacion como borrar barra bar arriba android preferences

parte - quitar status bar android



Eliminar/ocultar una preferencia de la pantalla (9)

Aquí hay una forma genérica de hacer esto que funciona independientemente de si la preferencia está en una PreferenceCategory o PreferenceScreen .

private void removePreference(Preference preference) { PreferenceGroup parent = getParent(getPreferenceScreen(), preference); if (parent == null) throw new RuntimeException("Couldn''t find preference"); parent.removePreference(preference); } private PreferenceGroup getParent(PreferenceGroup groupToSearchIn, Preference preference) { for (int i = 0; i < groupToSearchIn.getPreferenceCount(); ++i) { Preference child = groupToSearchIn.getPreference(i); if (child == preference) return groupToSearchIn; if (child instanceof PreferenceGroup) { PreferenceGroup childGroup = (PreferenceGroup)child; PreferenceGroup result = getParent(childGroup, preference); if (result != null) return result; } } return null; }

Tengo una actividad que extiende PreferenceActivity. Estoy cargando preferencias del archivo xml. Pero en algunos casos necesito ocultar por completo una de las preferencias de la pantalla en función del estado de mi aplicación. Hay un método setEnabled, pero no es exactamente lo que quiero. Quiero eliminar esa preferencia de la pantalla por completo. Es posible ?


En el archivo XML, puede hacer una preferencia oculta dejando las etiquetas de título y resumen vacías.

<EditTextPreference android:defaultValue="toddlerCam" android:key="save_photo_dir" />


En el caso en que la preferencia es un elemento directo de la pantalla de preferencias, aquí hay un código independiente:

PreferenceScreen screen = getPreferenceScreen(); Preference pref = getPreferenceManager().findPreference("mypreference"); screen.removePreference(pref);


En tu archivo XML:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:key="preferenceScreen"> <PreferenceCategory android:key="personalisation" android:title="your title here"> <ThemedPreference android:key="animation" /> </PreferenceScreen>

En tu código:

PreferenceScreen pPreferenceScreen = (PreferenceScreen) findPreference("preferenceScreen"); PreferenceCategory pCategory = (PreferenceCategory) findPreference("personalisation"); ThemedPreference pThemePref = (ThemedPreference) findPreference("animation"); pPreferenceScreen.removePreference(pCategory); //remove category pCategory.removePreference(pThemePref); // remove preference



Si desea evaluar, y en base a esa máscara, una alternativa puede ser / (Si desea evaluar, y en base a eso ocultar, una alternativa puede ser):

SwitchPreference autenticacionUsuario = (SwitchPreference) findPreference("key_autenticacion_usuario"); final EditTextPreference Username = (EditTextPreference) findPreference("key_username_mqtt"); final EditTextPreference Password = (EditTextPreference) findPreference("key_password_mqtt"); if (!autenticacionUsuario.isChecked()) { PreferenceCategory preferenceCategory = (PreferenceCategory) findPreference("category_mqtt"); preferenceCategory.removePreference(Username); preferenceCategory.removePreference(Password); }

Todo esto debe estar dentro de / (Todo esto debe ir dentro):

public static class PrefsFragment extends PreferenceFragment {

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);


Si quiere algo que cambie dinámicamente las preferencias, por ejemplo, en SwitchPreference, he encontrado que la mejor manera es poner todas mis subopciones en dos contenedores de categoría. Inicialmente tendrá todo lo que se muestra, luego solo eliminará los bits que no quiere. Lo más inteligente es que solo desencadenas recrear cuando algo cambia y luego no tienes que crear nada manualmente o preocuparte por volver a poner las cosas en el orden correcto.

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); PreferenceCategory prefCatOne= (PreferenceCategory)findPreference("prefCatOne"); PreferenceCategory prefCatTwo= (PreferenceCategory)findPreference("prefCatTwo"); SwitchPreference mySwitchPref= (SwitchPreference)findPreference("mySwitchPref"); PreferenceScreen screen = getPreferenceScreen(); if (mySwitchPref.isChecked()) { screen.removePreference(prefCatOne); } else { screen.removePreference(prefCatTwo); } } public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { if (key.equals("mySwitchPref")) { this.recreate(); } }

El único inconveniente que puedo ver con esto es que hay un flash ya que la pantalla se recrea desde cero.


Si su Preference está dentro de una categoría de PreferenceCategory , debe hacer esto:

XML:

<PreferenceCategory android:key="category_foo" android:title="foo"> <CheckBoxPreference android:key="checkPref" />

Java:

CheckBoxPreference mCheckBoxPref = (CheckBoxPreference) findPreference("checkPref"); PreferenceCategory mCategory = (PreferenceCategory) findPreference("category_foo"); mCategory.removePreference(mCheckBoxPref);


Sí, si tiene una referencia tanto a la Preference como a su elemento primario (una PreferenceCategory o PreferenceScreen )

myPreferenceScreen.removePreference(myPreference);