Xamarin安卓。在NavigationView中更改单个菜单项的textSize

时间:2018-04-10 09:09:02

标签: android xml xamarin xamarin.android menuitem

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

List<String> list = List.of("first", "second", "third");

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

2 个答案:

答案 0 :(得分:2)

非常感谢你的帮助。是的,按照这个例子和链接我修复了这个问题。执行此操作的代码是这样的。我添加这两个方法来改变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);
}

答案 1 :(得分:0)

我没有找到使用菜单在xml中执行此操作的方法,但您可以在代码中执行此操作。看一下这篇博客文章:Change text color of MenuItem in Navigation Drawer,作者使用以下代码更改单个项目的文本颜色:

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#。