La barra de acción se ve cortada mientras se utiliza Theme.AppCompat.Dialog

Quise hacer que una de mis actividades se pareciera a un diálogo y utilizara un tema Theme.AppCompat.Dialog para ello, pero hizo que la barra de acción se viera mal (ver abajo).

Ahora el fondo se corta a la longitud de la cadena de título y no puedo encontrar ninguna propiedad de tema para arreglarlo.

¿Qué se puede hacer para evitarlo?

Parte relacionada de styles.xml:

<style name="DeviceListTheme" parent="Theme.AppCompat.Dialog"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> </style> 

Comienzo la actividad usando el código siguiente:

 Intent intent = new Intent(this, DeviceListActivity.class); startActivityForResult(intent, REQUEST_CONNECT_DEVICE); 

Primero, cuando encontré este problema, intenté usar supportRequestWindowFeature(Window.FEATURE_NO_TITLE); Pero esto no funcionó para mí y no tuvo ningún efecto.

El método alternativo para eliminar la barra en la parte superior de su actividad de diálogo sería crear un estilo personalizado y aplicarlo a esa actividad.

En styles.xml , cree un nuevo estilo como el siguiente:

 <style name="MyCustomDialog" parent="Base.Theme.AppCompat.Light.Dialog"> <item name="android:windowNoTitle">true</item> <item name="windowActionBar">false</item> </style> 

Ahora, en AndroidManifest.xml , añada en android:theme="@style/MyCustomDialog" a su actividad.

Por supuesto, MyCustomDialog puede cambiar el nombre a cualquier cosa que desee.

Utilice DialogWhenLarge en lugar del estilo de diálogo estándar:

 <style name="MyDialogTheme" parent="@style/Theme.AppCompat.Light.DialogWhenLarge"> ... </style> 

He resuelto el mismo problema de esta manera:

Actividad:

 public class MyActivity extends android.support.v4.app.FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_layout); setTitle("View task"); } } 

Tema:

 <style name="Theme.MyDialog" parent="@style/Theme.AppCompat.Light.Dialog"> <item name="android:windowNoTitle">false</item> </style> 

Manifiesto:

 <activity android:name=".MyActivity" android:theme="@style/Theme.MyDialog"/> 

Resultado:

Introduzca aquí la descripción de la imagen

Esta funcionando

 <style name="AppThemeDialog" parent="Theme.AppCompat.Light.Dialog"> <item name="android:windowNoTitle">true</item> <item name="android:spinnerStyle">@style/holoSpinner</item> </style> @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); setTitle("Batches"); } 
  • ¿Cómo uso estilos de interfaz de usuario comunes en Android?
  • Utiliza el tema de Holo en la aplicación Android de Qt
  • ¿Cómo conseguimos el tema de una actividad?
  • Tema Programáticamente establecido. Cómo volver a cargar Actividad para aplicar
  • AppCompat ActionBar tema giratorio desplegable
  • Temas de aplicación, cambio e ImageView src basados ​​en el nombre del tema de la aplicación
  • Theme.Translucent falla en ICS
  • El botón de radio creado dinámicamente o CheckBox no utiliza el acento de color
  • PreferenciaLa actividad y el tema no se aplican
  • Recurso para descargar temas / estilos de aplicación de Android?
  • Cambio del icono de la barra de acciones
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.