Создайте тему AppCompat с пользовательским макетом ActionBar - PullRequest
0 голосов
/ 10 мая 2019

У меня проблема.Я создал тему в моем файле 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 голосов
/ 13 мая 2019

Вы можете использовать следующий код.

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