В настоящее время я создаю приложение Xamarin для Android и пытаюсь настроить BottomNavigationView.
Я бы хотел иметь возможность изменить стиль определенного элемента меню в BottomNavigationView из следующих:
В этом стиле:
Я посмотрел на следующий вопрос: Другой вид / стиль для определенного пункта меню на панели действий , но он, кажется, больше ориентирован на панель действий, чем на нижнюю навигацию.
Я полагаю, что для этого потребуется либо собственный элемент управления, либо использование отражения для достижения желаемого результата? Любые сторонние библиотеки, которые реализуют такую функциональность, не особенно полезны, так как большинство из них написаны для собственного android, а не для xamarin.
Спасибо за любую помощь в Xamarin C # или Native Java (которую я мог бы преобразовать).
В настоящее время я попытался установить макет настраиваемого действия в пункте меню программно:
var nav = FindViewById<BottomNavigationView>(R.Id.bottom_navigation);
var result = nav.Menu.GetItem(2);
result.SetTitle(null);
result.SetIcon(null);
var image = new ImageButton(this);
image.SetImageDrawable(GetDrawable(R.Drawable.ic_action_grade));
image.SetColorFilter(Android.Graphics.Color.Black);
result.SetActionView(image);
И, указав пользовательский макет, используя свойство app:actionLayout
пункта меню. Источник: https://www.techrepublic.com/article/pro-tip-use-a-custom-layout-to-badge-androids-action-bar-menu-items/
view_accent_grade.axml (макет действия)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black">
<ImageView
android:id="@+id/ic_action_grade"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:src="@drawable/ic_action_grade" />
</RelativeLayout>
menu.axml (Макет меню)
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto">
<item
android:id="@+id/navigation_home"
android:title="@string/action_home"
android:icon="@drawable/ic_action_home" />
<item
android:id="@+id/navigation_events"
android:title="@string/action_events"
android:icon="@drawable/ic_action_event" />
<item
android:id="@+id/navigation_car_of_the_month"
app:showAsAction="ifRoom"
app:actionLayout="@layout/view_accent_grade" /> <!-- Specifying App Layout here -->
<item
android:id="@+id/navigation_photos"
android:title="@string/action_photos"
android:icon="@drawable/ic_action_photo" />
<item
android:id="@+id/navigation_more"
android:title="@string/action_more"
android:icon="@drawable/ic_action_more_horiz" />
</menu>