Насколько я знаю, в меню нет возможности принудительно разорвать строку.Это на самом деле имеет смысл, если вы рассматриваете некоторые сценарии.
Например, представьте, что у вас есть планшет (например, Galaxy Tab) в альбомной ориентации.Он имеет достаточно много горизонтального пространства и сравнительно небольшую высоту.Так что в таком случае было бы пустой тратой места.

Я провел дополнительное расследование по этому вопросу.Существует класс с именем MenuBuilder
, который используется для управления меню параметров.Он использует icon_menu_layout
ресурс макета для рисования меню. Здесь - это ресурс:
<com.android.internal.view.menu.IconMenuView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+android:id/icon_menu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:rowHeight="66dip"
android:maxItems="6"
android:maxRows="2"
android:maxItemsPerRow="6" />
И если вы будете следовать реализации IconMenuView
, вы найдете одну интересную функцию под названием layoutItems
, который используется для расчета макета для пунктов меню.Вы можете влиять только на логику этой функции, искусственно увеличивая ширину пунктов меню.Нет разрывов строк.
private void layoutItems(int width) {
int numItems = getChildCount();
if (numItems == 0) {
mLayoutNumRows = 0;
return;
}
// Start with the least possible number of rows
int curNumRows =
Math.min((int) Math.ceil(numItems / (float) mMaxItemsPerRow), mMaxRows);
/*
* Increase the number of rows until we find a configuration that fits
* all of the items' titles. Worst case, we use mMaxRows.
*/
for (; curNumRows <= mMaxRows; curNumRows++) {
layoutItemsUsingGravity(curNumRows, numItems);
if (curNumRows >= numItems) {
// Can't have more rows than items
break;
}
if (doItemsFit()) {
// All the items fit, so this is a good configuration
break;
}
}
}
Так, например, если вы увеличите ширину первого элемента, вы получите две строки в меню.Но это, вероятно, нежелательно, поскольку вы не можете предсказать стиль, размер и шрифт текста, который будет использоваться на разных устройствах.
