簡體   English   中英

Android / Xamarin項目中的自定義主題 - 操作欄的中心標題文本

[英]Custom theme in Android / Xamarin project - center Title text of Action Bar

我在Android / Xamarin項目中有自定義主題。 我不能做的是:

  • 將標題設置為中間(並刪除圖標)
  • 添加帶菜單選項的菜單按鈕(例如按鈕設置)

我嘗試過設置屬性 - >重力到中心,但它不起作用。

預習

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

您必須通過靜態類中的靜態方法以編程方式執行此操作

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

請注意,您必須使用文本的右邊距維度。 此邊距應該等於主圖標的寬度(它在那里,但它是不可見的)。

您可以添加正確的圖標,將其添加到Menu.xml上,並在活動的OnCreateOptionsMenu方法中膨脹此xml文件。

您也可以使用菜單和樣式xml文件來完成。 例如,要添加設置按鈕,您只需在菜單文件中添加一個項目,該項目定義圖片中顯示的UI菜單。 有一些預定義的圖標,比如我使用的圖標(ic_menu_preferences),但您可以使用另一個圖標或使用圖像。 那么,讓我們說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"/>

[...]

要離開圖標,您可以將此行添加到定義此UI的樣式,或者如果您尚未創建新行,則創建一個新行。 所以,在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>

最后,在參考將標題放在中間時,我還沒有找到另一種方法,而不是定義一個自定義的xml操作欄,並按照這里所說的方式設置它: 中心在操作欄中使用android中的樣式對齊標題。 :。 如果有人知道怎么做只使用風格將受到歡迎。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM