gluon mobile: меню в меню мерцают - PullRequest
0 голосов
/ 24 февраля 2019

Привет, сообщество stackoverflow ...

Я поместил несколько (JavaFX) -экземпляров Menu в одно меню (которое находится в подузле GluonMobile-View):

Node -hierarchy of my view

Проблема в том, что подменю мерцают и накладываются друг на друга, когда курсор наводит один из них:

example-image 1

example-image 2

Так что мой вопрос, если кто-то знает решение моей проблемы.(Представление было построено с помощью SceneBuilder)

1 Ответ

0 голосов
/ 24 февраля 2019

Для начала классические настольные меню на самом деле не предназначены для использования в мобильных приложениях.

Вы должны рассмотреть различные подходы, такие как NavigationDrawer ( javadoc ) или BottomNavigation элемент управления ( javadoc ).

В любом случае, если вам действительно нужно их использовать, вот объяснение проблемы, с которой вы столкнулись:

В Scene Builder, когда вы добавляете MenuBar, он по умолчанию включает некоторые элементы управления Menu и MenuItem,Если вы включите тему Gluon Mobile:

image

, вы заметите, что отступ для Menu минимален, тогда как MenuItem имеет больший отступ и минимальную высоту иширина была установлена.

Если вы добавите Menu в качестве дочернего элемента другого Menu, если это меню не выбрано или не сфокусировано, оно будет стилизовано как MenuItem, но если вы сфокусируете его,он будет стилизован как Menu, вызывая ретрансляцию.

Например, на этой картинке Edit вверху - меню выбора, а Edit внизу не выбрано.

image

Сразу послемакет, если курсор мыши был достаточно близок к следующему элементу, возможно, что сейчас его выбирают, что позволит его развернуть.В то же время прежнее выбранное меню будет отменено, и оно снова будет расти ...

Вот простой способ решения проблемы: в вашем CSS-файле для представления добавьте что-то вроде:

.menu,
.menu:focused,
.menu-item {
    -fx-padding: 10;
}

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

image

Обратите внимание, что с помощью css вы можете переопределить любой предыдущийсуществующего стиля и измените его по своему вкусу.

...