Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Desactivar programaticamente android: windowActionBarOverlay estilo de barra de acción

Actualmente, estoy usando ActionBarSherlock . Quiero iniciar SecondActivity desde MainActivity .

MainActivity está utilizando la barra de acción con el estilo windowActionBarOverlay activado. SecondActivity utiliza la barra de acciones con el estilo windowActionBarOverlay desactivado. Por lo tanto, aquí es cómo se ve mi XML.

 <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:debuggable="false" > <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/ThemeWithActionBarOverlay" android:screenOrientation="nosensor" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SecondActivity" android:theme="@style/ThemeWithoutOverlay"> </activity> </application> 

 <resources> <style name="ThemeWithActionBarOverlay" parent="@style/Theme.Sherlock"> <item name="android:windowActionBarOverlay">true</item> <item name="abIcon">@drawable/ic_home</item> <item name="abTitleTextStyle">@style/ActionBarCompatTitle</item> </style> <style name="ThemeWithoutOverlay" parent="@style/Theme.Sherlock"> <item name="abIcon">@drawable/ic_home</item> <item name="abTitleTextStyle">@style/ActionBarCompatTitle</item> </style> </resources> 

Sin embargo, al hacerlo, en SecondActivity , me doy cuenta de que nunca puedo tener un botón arriba / atrás en la parte superior izquierda de la barra de acción. Aunque se muestra un icono, no es presionable. Sólo usando el mismo tema (ThemeWithActionBarOverlay) como MainActivity , solo se mostrará el botón de arriba / atrás. Sin embargo, si dejo que SecondActivity utilice el mismo tema como MainActivity , descubro que no hay forma de desactivar el comportamiento de windowActionBarOverlay .

 // SecondActivity @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.history_list_activity); ActionBar actionBar = this.getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); // How to turn android:windowActionBarOverlay attribute to false during runtime? // actionBar.??? } 

Mis preguntas son

  1. ¿Por qué la actividad del niño tiene que usar una barra de acción con el mismo tema que la de los padres, para que se muestre el botón correcto de arriba / atrás? ¿Hay alguna manera de utilizar diferentes temas, pero aparece el botón de subir / regresar en la actividad de los niños?
  2. ¿Es posible windowActionBarOverlay estilo de windowActionBarOverlay durante el tiempo de ejecución?

  • Sqlite: parece que moveToNext funciona sin moverToFirst necesario
  • ¿Cómo puedo crear una expresión regular para esto en android?
  • Usando Log.d () o Log.e () en mi código
  • Error: JNI ERROR (bug de la aplicación): se accede a la referencia global obsoleta
  • BroadcastReceiver + SMS_RECEIVED
  • Cómo construir i686-linux-android-gfortran para android-ndk8b (x86 arco Android)?
  • Lo que realmente hace el archivo R.java y cómo
  • Cómo ejecutar pruebas de unidad con Android Studio
  • One Solution collect form web for “Desactivar programaticamente android: windowActionBarOverlay estilo de barra de acción”

    Para responder a su primera pregunta, no es necesario que la actividad de padres e hijos utilice el mismo tema para que el botón "Arriba" funcione. De hecho, estoy trabajando en una aplicación de actividad de padres / niños similar, y su trabajo muy bien usando dos temas diferentes (un tema sin superposición para el padre, y el tema de pantalla completa (con superposición) para el niño).

    Debe haber otra razón por la que no está funcionando …

    • Asegúrese de haber definido MainActivity como el padre de la segunda actividad. Puede hacerlo por código, o por la forma preferida, en AndroidManifest.xml :

       <activity android:name=".SecondActivity" <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" /> </activity> 
    • Asegúrese de que en la actividad de su hijo, ha activado la navegación "arriba":

        final ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); 

    Para su segunda pregunta, intente reemplazar el 'windowActionBarOverlay' en el tema 'ThemeWithoutOverlay' a false :

     <style name="ThemeWithoutOverlay" parent="@style/Theme.Sherlock"> <item name="android:windowActionBarOverlay">false</item> <item name="windowActionBarOverlay">false</item>< <item name="abIcon">@drawable/ic_home</item> <item name="abTitleTextStyle">@style/ActionBarCompatTitle</item> </style> 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.