使用自定义ActionBar布局创建AppCompat主题

时间:2019-05-10 14:40:38

标签: c# xamarin.android android-appcompat

我有问题。我在styles.xml中创建了一个主题,如下所示:

<resources>
  <style name="BluePixelsTheme" parent="@style/Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/ActionBarStyle</item>
  </style>

  <style name="ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
    <item name="android:height">75dp</item>
    <item name="android:displayOptions"></item>
  </style>
</resources>

现在在我的MainActivity中,像这样设置ActionBar的布局:

ActionBar.SetCustomView(Resource.Layout.setup_nav_bar);
ActionBar.SetDisplayShowCustomEnabled(true);
((Toolbar)ActionBar.CustomView.Parent).SetContentInsetsAbsolute(0, 0);

但这会导致错误,指出ActionBar具有一个null值... 当我不使用AppCompat主题时,一切都很好,但是如何使 AppCompat主题一起工作?

请让我知道!

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码。

 this.SupportActionBar.DisplayOptions = (int)ActionBarDisplayOptions.ShowCustom;
        SupportActionBar.SetDisplayShowCustomEnabled(true);
        View view = LayoutInflater.Inflate(Resource.Layout.setup_nav_bar,
        null);
        Android.Support.V7.App.ActionBar.LayoutParams layoutParams = new Android.Support.V7.App.ActionBar.LayoutParams(Android.Support.V7.App.ActionBar.LayoutParams.MatchParent, Android.Support.V7.App.ActionBar.LayoutParams.MatchParent);
        SupportActionBar.SetCustomView(view, layoutParams);

        Android.Support.V7.Widget.Toolbar parentToolbar = view.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.ll_toolbar);
        parentToolbar.SetContentInsetsAbsolute(0, 0);