Я бы добавил это в качестве комментария к ответу Nate, но мне не хватает места, и я не могу отформатировать код в комментарии.
Я думаю, что решение Nate работает, потому что он использует сплошной цвет и нет зоны заголовка или баннера. Я не думаю, что это будет работать при использовании растрового изображения или градиента в качестве фона, и есть заголовок или баннер.
Чтобы понять ответ, вам необходимо понять Менеджеров, используемых в MainScreen. Насколько я понимаю, существует ряд менеджеров. Один - диспетчер делегатов, используется для всего экрана. Добавив к этому:
- баннер менеджер, который расположен в верхней части экрана
- название диспетчера, который расположен под баннером менеджера
- Главный менеджер, и
- менеджер статус , который расположен в нижней части экрана .
Делегат-менеджер предоставит фон для всех других Менеджеров, если они прозрачны. Мое тестирование показывает, что фон для менеджеров для поля баннера и поля состояния прозрачен. Фон для Менеджера для поля заголовка не является - он черный, но изменение выглядит проблематичным.
В любом случае, в моем тестировании, чтобы соответствовать требованию, все, что вам нужно сделать, это установить фон Диспетчера делегата по мере необходимости и установить фон MainManager в прозрачный.
Следующий код настроен таким образом, который, как я думаю, отвечает на вопрос. Однако я также оставил ряд прокомментированных строк, которые я предлагаю вам раскомментировать и отметить эффект. Это интересно (по крайней мере, такой печальный человек, как я).
Background transparentBackground = BackgroundFactory.createSolidTransparentBackground(0, 0);
Background gradientBackground = BackgroundFactory.createLinearGradientBackground(0X00909090, 0x00808080, 0x00E0E0E0, 0x00E8E8E8);
getMainManager().setBackground(transparentBackground);
getDelegate().setBackground(gradientBackground);
// this is the same as this.setBackground(gradientBackground);
LabelField banner = new LabelField("Hello Banner");
// banner.setBackground(gradientBackground);
setBanner(banner);
// LabelField title = new LabelField("Hello Title");
// title.setBackground(transparentBackground);
// setTitle(title);
// title.getManager().setBackground(transparentBackground);
LabelField status = new LabelField("Hello Status");
// status.setBackground(gradientBackground);
setStatus(status);
LabelField content = new LabelField("Hello Content", LabelField.FOCUSABLE);
content.setBackground(transparentBackground);
add(content);
// Following just added so that focus can be moved off the content LabelField
add(new NullField());
Наконец, могу ли я рекомендовать эту статью для интересного чтения на MainScreen.
MainScreen explained