Android/Xamarin 项目中的自定义主题 - Action Bar 的中心标题文本 [英] Custom theme in Android / Xamarin project - center Title text of Action Bar

查看:20
本文介绍了Android/Xamarin 项目中的自定义主题 - Action Bar 的中心标题文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 Android/Xamarin 项目中有自定义主题.我不能做的是:

I have custom theme in Android / Xamarin project. What I can't do is to:

  • 将标题设置在中间(并删除图标)
  • 添加带有菜单选项的菜单按钮(例如按钮设置)

我试过设置属性 -> 重力到中心,但没有用.

I've tried with settings property -> gravity to center but it didn't work.

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

推荐答案

您必须通过静态类中的静态方法以编程方式来完成

You will have to do it programmatically via a static method inside a static class

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

请注意,您必须调整文本的右边距尺寸.这个边距应该等于主页图标的宽度(它在那里但不可见).

Notice that you have to play with right margin dimension of the text. This margin should be equal as width of the home icon(it is there but it is invisible).

您可以添加正确的图标,将其添加到 Menu.xml 并在您的活动的 OnCreateOptionsMenu 方法中扩充此 xml 文件.

You can add the right icon adding it on a Menu.xml and inflating this xml file in the OnCreateOptionsMenu method of your activity.

这篇关于Android/Xamarin 项目中的自定义主题 - Action Bar 的中心标题文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆