как сделать навигацию по пунктам меню в Android - PullRequest
0 голосов
/ 19 марта 2019

Прежде всего, я увидел одну ветку стека относительно того же вопроса, но она не работает для меня, может быть, потому что я новичок, если кто-нибудь знает, пожалуйста, помогите мне, я нахожусь в навигационном ящике, теперь я хочу, чтобы пункты меню выровнялисьв центре что-то вроде этого

это то, что я получил от переполнения стека

  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 голосов
/ 19 марта 2019

Вы можете попробовать создать собственный ящик, в котором можно разместить пункты меню в центре.

Пользовательский ящик навигации

0 голосов
/ 09 июля 2019

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

Я думаю, что установка этого в собственном макете, как указал Гэвин в своем ответе, была бы более аккуратной, но стоить того, чтобы не иметь возможности использовать Android из готового меню..

0 голосов
/ 19 марта 2019

Вместо использования MenuItem (наряду с, я предполагаю, NavigationView), просто используйте вертикальный LinearLayout для содержимого вашего ящика.Вы сможете стилизовать его как угодно.

...