将 ActionBar 标题与 Xamarin 中心对齐

Posted

技术标签:

【中文标题】将 ActionBar 标题与 Xamarin 中心对齐【英文标题】:Align ActionBar Title to center Xamarin 【发布时间】:2016-03-16 11:37:07 【问题描述】:

我正在使用 Xamarin Forms,我删除了我的图标,现在我想将操作栏标题放在中心,实际上它在左侧。

我看到一些页面说我使用 getSupportActionBar(),但这在我的 Visual Studio 中找不到,我正在尝试在我的 Style.xml 或我的 MainActivity 上删除它。

MainActivity.XML

using System;

using android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

namespace App5.Droid

    [Activity(Label = "App5", Icon = "@drawable/icon", Theme = "@style/CustomActionBarTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
            
        protected override void OnCreate(Bundle bundle)
        
            base.OnCreate(bundle);            
            global::Xamarin.Forms.Forms.Init(this, bundle);
            ActionBar.SetIcon(Android.Resource.Color.Transparent);
            LoadApplication(new App());
        

    

样式.xml:

<?xml version="1.0" encoding="utf-8" ?>
<resources>
  <!-- the theme applied to the application or activity -->
  <style name="CustomActionBarTheme"
         parent="@android:style/Theme.Holo.Light">
    <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">#000000</item>

  </style>

</resources>

【问题讨论】:

【参考方案1】:

使用Xamarin,唯一的方法是编程:

LinearLayout lLayout = new LinearLayout(activity);
lLayout .SetGravity(GravityFlags.CenterVertical);
lLayout .LayoutParams textViewParameters = 
                        new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.MatchParent);
textViewParameters.RightMargin = (int)(30 * activity.Resources.DisplayMetrics.Density);

TextView myTitle = new TextView(activity);        
myTitle.Text = text;
myTitle.Gravity = GravityFlags.Center;
lLayout.AddView(myTitle ,textViewParameters);

ActionBar.LayoutParams actionbarParams = new ActionBar.LayoutParams(ActionBar.LayoutParams.MatchParent,ActionBar.LayoutParams.MatchParent);
activity.ActionBar.SetCustomView(lLayout, actionbarParams);

【讨论】:

On 'new LinearLayout(activity);" 我没有创建活动,我正在使用上面代码中发送的 MainActivity,那么如何在 MainActivity 上定义活动?正在使用 MasterDetailPage 嗨 Fred,var activity = Activity; "CS0119 'Activity' 是一种类型,在给定的上下文中无效" 使用时出现错误:var activity = Activity; 我使用了 'Activity 活动 = new Activity();但现在错误是:“CS0118 'lLayout' 是一个变量,但用作类型” NO!,不要创建新实例,使用当前的 Activity 实例。

以上是关于将 ActionBar 标题与 Xamarin 中心对齐的主要内容,如果未能解决你的问题,请参考以下文章

使用 Xamarin Studio 将 Lollipop Toolbar 添加到我的项目

透明 ActionBar:将 NativeScript 与 Angular 结合使用

将微调器添加到 ActionBar(不是导航

Listview隐藏在ActionBar后面

根据导航目标更新ActionBar菜单

将 UWP 标头模板中的图标与 xamarin.forms 一起使用