Tema personalizado en Android / Xamarin project – center Título del texto de Action Bar

Tengo tema personalizado en Android / proyecto Xamarin. Lo que no puedo hacer es:

  • Fije el encabezado al centro (y quite el icono)
  • Agregar el botón del menú con la opción del menú (por ejemplo ajustes del botón)

He intentado con la propiedad de los ajustes -> gravedad al centro pero no trabajó.

Avance

<?xml version="1.0" encoding="utf-8"?> <resources> <!-- the theme applied to the application or activity --> <style name="AgrippaTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar"> <item name="android:actionBarStyle">@style/MyActionBar</item> </style> <!-- ActionBar styles --> <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse"> <item name="android:background">@color/main_orange_color</item> <item name="android:titleTextStyle">@style/AgrippaTheme.TitleTextStyle</item> </style> <!-- ActionBar TitleTextStyle styles --> <style name="AgrippaTheme.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textColor">@color/main_black_color</item> <item name="android:gravity">center_vertical|center_horizontal</item> </style> </resources> 

Usted tendrá que hacerlo programáticamente a través de un método estático dentro de una clase estática

 public static void SetActionbarText(Activity activity, string text) { // Setting custom view enable activity.ActionBar.SetHomeButtonEnabled(false); activity.ActionBar.SetIcon(Android.Resource.Color.Transparent); activity.ActionBar.SetDisplayShowCustomEnabled(true); activity.ActionBar.Title = ""; LinearLayout linearLayout = new LinearLayout(activity); linearLayout.SetGravity(GravityFlags.CenterVertical); LinearLayout.LayoutParams textViewParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.MatchParent); textViewParameters.RightMargin = (int)(40 * activity.Resources.DisplayMetrics.Density); TextView modelTitle = new TextView(activity); modelTitle.Text = text; modelTitle.Gravity = GravityFlags.Center; linearLayout.AddView(modelTitle,textViewParameters); ActionBar.LayoutParams actionbarParams = new ActionBar.LayoutParams(ActionBar.LayoutParams.MatchParent,ActionBar.LayoutParams.MatchParent); activity.ActionBar.SetCustomView(linearLayout, actionbarParams); } 

Observe que tiene que jugar con la dimensión del margen derecho del texto. Este margen debe ser igual que el ancho del icono de inicio (está allí pero es invisible).

Puede agregar el icono derecho para añadirlo a Menu.xml e inflar este archivo xml en el método OnCreateOptionsMenu de su actividad.

También puede hacerlo utilizando los archivos xml de menú y estilos. Para agregar el botón de configuración, por ejemplo, sólo puede agregar un elemento en el archivo de menú que define el menú de la interfaz de usuario que se muestra en la imagen. Hay algunos iconos predefinidos, como el que he usado (ic_menu_preferences), pero puedes usar otro o usar una imagen en su lugar. Por lo tanto, en, vamos a decir agrippa_menu.xml:

  <?xml version="1.0" encoding="utf-8"?> 

[…]

 <item android:id="@+id/menu_item_settings" android:title="@string/settings" android:icon="@android:drawable/ic_menu_preferences" android:showAsAction="ifRoom|withText" app:showAsAction="ifRoom|withText"/> 

[…]

Para desplazarse por el icono, puede agregar esta línea al estilo que define esta interfaz de usuario, o crear una nueva si no la tiene ya creada. Por lo tanto, en styles.xml:

 <style name="AgrippaTheme" parent="android:Theme.Holo.Light"> <!--pre v11--> <item name="logo">@color/transparent</item> <!--post v11--> <item name="android:logo">@color/transparent</item> <!-- Customize your theme here. --> </style> 

Por último, en referencia a poner el título en el medio, no he encontrado otra manera que la definición de una barra de acción personalizada xml y establecerlo de forma programática como se dice aquí: Centro Alinear el título en la barra de acción utilizando estilos en android. :. Si alguien sabe cómo hacerlo usando sólo estilos será bienvenido.

  • RelativeLayout en el cálculo del ancho de StackLayout
  • No se puede implementar Xamarin aplicación correctamente
  • Xamarin - 'Android.Content.IntentFilter' no es una clase de atributo
  • Trabajar con ffmpeg en Xamarin Android
  • Xamarin AndroidManifest.xml es diferente al de Visual Studio
  • 2016-10-05 nivel de seguridad de nivel rompe Nexus-9 Xamarin
  • Cambiar API 19 a 18? Estudio Xamarin
  • No se puede instalar NuGet-Packages (proyecto Android de Xamarin)
  • Xamarin.forms mezclando ContentPage y la actividad de Android
  • NullPointerException mientras muestra OptionsMenu
  • Cómo arreglar los errores de compilación de Xamarin.Android con proguard habilitado?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.