2014-11-03 6 views
7

Mam niestandardowy motyw w projekcie Android/Xamarin. Czego nie mogę zrobić, to:Temat niestandardowy w projekcie Android/Xamarin - tekst centrum tytułu paska działań

  • zestaw nagłówek na środku (i usunąć ikony)
  • add przycisk menu z opcji menu (na przykład Ustawienia przycisków)

Próbowałam z ustawieniem właściwości -> grawitacja na centrum, ale to nie zadziałało.

Preview

<?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> 

Odpowiedz

10

Trzeba będzie to zrobić programowo za pomocą metody statycznej wewnątrz klasy statycznej

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); 
     } 

zauważyć, że masz grać z odpowiednim wymiarem marginesie tekstu. Margines ten powinien być równy szerokości ikony domu (jest tam, ale jest niewidoczny).

Możesz dodać prawą ikonę dodając ją do pliku Menu.xml i nadmuchując ten plik xml w metodzie OnCreateOptionsMenu Twojej aktywności.

3

Można to również zrobić za pomocą plików xml menu i stylów. Aby dodać przycisk ustawień, możesz po prostu dodać element w pliku menu, który definiuje menu interfejsu pokazane na obrazku. Istnieje kilka predefiniowanych ikon, takich jak ta, której użyłem (ic_menu_preferences), ale możesz użyć innego lub użyć zamiast tego obrazu. Tak więc, w, Let`s powiedzieć 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"/> 

[...]

jeździć poza ikoną możesz dodać tę linię do stylu, który definiuje ten interfejs lub utworzyć nowy, jeśli nie masz go już utworzony. Tak więc, w 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> 

Wreszcie, w odniesieniu do umieścić tytuł w środku, ja haven't znaleźć inny sposób niż definiując pasek działań niestandardowych xml i ustawić go programowo jak to powiedział jest tutaj: Center Align title in action bar using styles in android.:. Jeśli ktoś wie, jak to zrobić, wystarczy użyć tylko stylów.

Powiązane problemy