您好我使用C#和Xamarin开发我的新应用程序并使用此平台遇到了许多问题。是否可以使用xamarin自定义NavigationView中的菜单项?我发现的只有valid properties for the menu items。 但如果不是这样的话呢?
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/itemOne"
android:title="Go to page one" />
<item
android:id="@+id/itemTwo"
android:title="Go to page two" />
</menu>
我想这样做:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<TextView></TextView>
<Button></Button>
<SomeOtherControlHere></SomeOtherControlHere>
</menu>
是否可以使用xamarin?我还有什么其他选择?
除此之外我发现Xamarin API非常严格,例如你不能直接在xml中使用自定义ttf字体来设置菜单项的字体:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/itemOne"
android:title="Go to page one"
android:fontFamily="MyCustomFontName Or MyPathToFonts" /> <-- NOT VALID
</menu>
此外,如果我为整个菜单项容器应用样式,也无法使用自定义字体,我们可以使用的唯一字体是内置字体......
即使我在Activity中引用了一个单独的菜单项(IMenuItem),也没有设置字体系列的属性或函数。
答案 0 :(得分:0)
可以定义更复杂的NavigationView。只需将子控件放在NavigationView-Tag中即可。例如,这是我使用NavigationView实现页脚的方式。对于子控件没有任何限制,所以你也可以使用Buttons等:
<android.support.design.widget.NavigationView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/navigation_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
local:headerLayout="@layout/drawer_header"
local:theme="@style/NavigationDrawerStyle"
local:menu="@menu/drawer_menu">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:orientation="vertical">
<TextView
android:id="@+id/empty_spacer"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:clickable="false"
android:text="" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="65dp"
android:background="@drawable/footer_small"
android:orientation="vertical"
android:weightSum="1" />
</LinearLayout>
</android.support.design.widget.NavigationView>
例如,要更改项目的TextSize,您必须定义自己的样式:
<style name="NavigationDrawerStyle">
<item name="android:textSize">24sp</item>
<!-- more properties -->
</style>
然后将其分配给您的NavigationView:
<android.support.design.widget.NavigationView app:theme="@style/NavigationDrawerStyle">
<!-- ... -->
</android.support.design.widget.NavigationView>
答案 1 :(得分:0)
这是我格式化导航菜单项的方式,它以图标开头,然后是菜单文本,最后一个是数字。它看起来像是gmail app中的那个。
的OnCreate
navigationView = FindViewById<NavigationView>(Resource.Id.wnl_nav_view);
//Add customize menu item style
IMenu menuNav = navigationView.Menu;
View view = View.Inflate(this, Resource.Layout._drawerMenuItemTemplate, null);
IMenuItem logoutItem = menuNav.FindItem(Resource.Id.nav_mail);
MenuItemCompat.SetActionView(logoutItem, view);
TextView txtNewNumber = view.FindViewById<TextView>(Resource.Id.txtNewNumber);
_drawerMenuItemTemplate.axml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/primary_text"
android:text="3/30"
android:id="@+id/txtNewNumber"
android:layout_gravity="right"
android:fontFamily="@string/abc_font_family_display_2_material"
android:textSize="13sp"
android:textStyle="bold"
android:paddingRight="6dp"
android:layout_marginTop="14dp" />
</FrameLayout>
&#13;