繁体   English   中英

Xamarin android。 更改NavigationView中单个菜单项的textSize

[英]Xamarin android. Change textSize of single menu item in NavigationView

在我的xamarin android应用中,我离开了NavigationView。 我有这个xml文件来显示菜单项

<?xml version="1.0" encoding="UTF-8" ?>
   <menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto">
<group android:checkableBehavior="single">
<item
  android:id="@+id/nav_home"
  android:title="Welcome "/>
<item
  android:id="@+id/nav_create_profile"
  android:title="Create Profile"/>
<item
  android:id="@+id/nav_stores"
  android:title="Find "/>
<item
  android:id="@+id/nav_events"
  android:title="Events" />
<item
  android:id="@+id/nav_history"
  android:title="History" />
<item
android:id="@+id/nav_faq"
android:title="FAQ" />
<item
  android:id="@+id/nav_product"
  android:title="Product " />
<item
      android:title="       " />
<item
  android:id="@+id/nav_terms"
  android:title="Terms and Conditions" />
<item
  android:id="@+id/nav_version"
  android:title="Version" />
<item
  android:id="@+id/nav_settings"
  android:title="Settings"/>
<item
  android:id="@+id/nav_logout"
  android:title="Sign out" />
</group>
</menu>

问题是我想更改单个项目的textSize。 我使用了自定义样式,但可以更改所有项目的大小。 如何为单个物品做到这一点? 非常感谢你。

非常感谢您的帮助。 是的,按照这个示例和链接,我解决了这个问题。 为此的代码是这样的。 我添加了这两种方法来更改textSiz和工作。

private void ChangeSwipeMenuItemsTextSize() {
    int LeftnavigationSize = navigationView.Menu.Size();

    for (int i = 0; i < LeftnavigationSize; i++)
        setTextColorForMenuItem(navigationView.Menu.GetItem(i));
}

private void setTextColorForMenuItem(IMenuItem menuItem) {
    var tf = Typeface.CreateFromAsset(Assets, "fonts/Montserrat.ttf");

    SpannableString spanString = new SpannableString(menuItem.TitleFormatted.ToString());
    spanString.SetSpan(new RelativeSizeSpan(1.3f),0,spanString.Length(), SpanTypes.ExclusiveExclusive);
    menuItem.SetTitle(spanString);
}

我找不到用菜单在xml中完成此操作的方法,但是您应该可以在代码中执行此操作。 看一下这篇博客文章: 在Navigation Drawer中更改MenuItem的文本颜色 ,作者使用以下代码来更改单个项目的文本颜色:

private void setTextColorForMenuItem(MenuItem menuItem, @ColorRes int color) {
    SpannableString spanString = new SpannableString(menuItem.getTitle().toString());
    spanString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(this, color)), 0, spanString.length(), 0);
    menuItem.setTitle(spanString);
}

为了更改字体大小,您还可以使用SpannableString ,如下所示:

spanStringsetSpan(new RelativeSizeSpan(1.2f), 
                  0, 
                  spanString.length(), 
                  Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

这段代码是用Java编写的,但是可以直接转换为C#。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM