哈玛林机器人.更改导航视图中单个菜单项的文本大小



在我的xamarin android应用程序中,我离开了滑动导航视图。我有这个 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。我使用了自定义样式,但我能够更改所有项目的大小。我怎样才能为单个项目做到这一点?谢谢。

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

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 中使用菜单的方法,但您应该能够在代码中做到这一点。看看这篇博文:在导航抽屉中更改 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#。

最新更新