如何在Android中使导航抽屉菜单项居中

时间:2019-03-19 05:06:56

标签: android navigation-drawer menuitem text-align

首先,我看到一个堆栈线程针对同一问题,但它对我而言并不完全有用,可能是因为我是新手,如果有人知道请帮助我,我现在在导航抽屉中,我想使菜单项对齐位于中心something just like this

这就是我从堆栈溢出中得到的

  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);

我在活动主体中编写了此代码,但不确定此代码中的settingsItemTitle是什么,所以工作室会给我错误

  

无法解析符号“ settingsItemTitle”

如果有人知道,请帮助我

3 个答案:

答案 0 :(得分:0)

与其使用key2(我猜是value),不如对抽屉内容使用垂直的LinearLayout。您将可以按照自己的方式设置样式。

答案 1 :(得分:0)

您可以尝试开发自定义抽屉,将菜单项放在中间。

Custom navigation drawer

答案 2 :(得分:0)

settingsItemTitle应该替换为MenuItem的标题。 如果标题已经在菜单布局文件中设置,则可以像下面这样重写代码:

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

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

 item.setTitle(s);

如果在放大菜单后用活动的覆盖onCreateOptionsMenu方法调用它,则此方法有效。

如果打算对菜单的所有项目执行此操作,则需要遍历它们。像这样:

for(int i = 0; i < menu.size(); i++) {
     MenuItem item = menu.getItem(i);
     SpannableString s = new SpannableString(item.getTitle());

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

     item.setTitle(s);
 }

我认为,正如Gavin在他的回答中指出的那样,将其设置为自己的布局会更整洁,但这是以无法使用现成的Android菜单为代价的。