在安卓中居中对齐菜单项文本

13

使用以下代码

<item 
    android:id="@+id/text"
    android:title="@string/mainMenu"
    android:enabled="false"
    android:layout_gravity="center">
</item>

我有一个被定义为

<style name="MenuTextStyle" parent="@android:style/TextAppearance.Medium">
    <item name="android:textColor">6F6B6B</item>
    <item name="android:gravity">center_horizontal</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textSize">14sp</item>

但菜单文字仍然不在中间。如何使其居中?

3个回答

15

您可以在活动中使用SpannableString动态地将菜单项居中对齐:

int positionOfMenuItem = 0; //or any other postion
MenuItem item = menu.getItem(positionOfMenuItem);
SpannableString s = new SpannableString(settingsItemTitle);

s.setSpan(new AlignmentSpan.Standard(Alignment.ALIGN_CENTER), 0, s.length(), 0);

item.setTitle(s);

1
注意:这只是水平居中。 - Guihgo
@ParthPatel 在你的 onCreate 方法中。 - James Gould

1
我使用了 @Mahm00d 的方法,它完美地解决了问题,但我发现另一种解决方法。那就是在字符串前面添加 \t。如果空格不够,我可以再添加更多。
因为中文单词一个接一个,所以每个项目的长度都相同。

1
另一种实现方式是通过设置主题。
 <android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    android:theme="@style/ThemeToolbar.NavigationViewPadding"
    app:itemTextColor="@color/inverse_color"
    app:itemIconTint="@color/inverse_color"
    app:itemBackground="@drawable/selector_navigation"
    app:headerLayout="@layout/activity_home_nav_header"
    app:menu="@menu/activity_home_drawer" />

在你的样式中
    <style name="ThemeToolbar.NavigationViewPadding">
    <item name="listPreferredItemPaddingLeft">50dp</item>
    </style>

How it looks like


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接