gpt4 book ai didi

java - 如何设置背景图片完全填满屏幕?

转载 作者:太空宇宙 更新时间:2023-11-04 07:50:42 24 4
gpt4 key购买 nike

我有一个背景图像,并在一个屏幕上叠加了 2 个 LabelField、一个 BasicEditField 和一个 ButtonField。我的问题是我的背景图像在按钮底部后被切断,而不是完全填满屏幕。 (为了便于阅读,我删除了多余的代码)

    VerticalFieldManager bgManager = new VerticalFieldManager(Manager.USE_ALL_WIDTH | 
Manager.NO_VERTICAL_SCROLL |
Manager.NO_VERTICAL_SCROLLBAR) {

//Override the paint method to draw the background image.
public void paint(Graphics graphics)
{
//Draw the background image and then call super.paint
//to paint the rest of the screen.
graphics.drawBitmap(0, 0, Display.getWidth(), Display.getHeight(), backgroundBitmap, 0, 0);
super.paint(graphics);
}
};
this.add(bgManager);

LabelField header = new LabelField("", LabelField.USE_ALL_WIDTH | DrawStyle.HCENTER);
header.setText("Search by Drug Name");
bgManager.add(header);

LabelField subtitle = new LabelField("", LabelField.USE_ALL_WIDTH | DrawStyle.HCENTER);
subtitle.setText("(brand name or generic)");
bgManager.add(subtitle);

HorizontalFieldManager hfm = new HorizontalFieldManager();

final BasicEditField edit = new BasicEditField("", "", 50, EditField.EDITABLE | BasicEditField.NO_NEWLINE) {
//code to make background of text box white
}
};
hfm.add(edit);

ButtonField search = new ButtonField("Search");
search.setChangeListener(new FieldChangeListener() {

public void fieldChanged(Field field, int context) {
//do something
}
});

如果我将 Manager.USE_ALL_HEIGHT 添加到 bgManager,我的背景图像会完全填满屏幕,但随后我的整个屏幕将变得可无限滚动。如果没有 Manager.USE_ALL_HEIGHT,我的屏幕根本无法滚动(正确),但背景图像在内容末尾被切断。

如何构建此屏幕,使其不可滚动并具有占据整个可见屏幕的背景图像?

这看起来是错误的:

enter image description here

这看起来是正确的(但滚动不正确):

enter image description here

这是我正在使用的背景图片:

enter image description here

最佳答案

我相信更改代码的最简单方法实际上是使用 USE_ALL_HEIGHT 标志。

  VerticalFieldManager bgManager =
new VerticalFieldManager(Manager.NO_VERTICAL_SCROLL |
Manager.NO_VERTICAL_SCROLLBAR |
Manager.USE_ALL_WIDTH |
Manager.USE_ALL_HEIGHT) {

这将用背景图像填充您的屏幕。

您没有显示此代码,但我猜问题不是 bgManager 实际上允许滚动,而是它所在的 Screen 允许垂直滚动。因此,请确保放置代码的容器禁用滚动。像这样的事情:

public class BgCropScreen extends MainScreen {

public BgCropScreen() {
super(MainScreen.NO_VERTICAL_SCROLL); // <<<<<< THIS IS THE CRITICAL LINE !!!!!!

VerticalFieldManager bgManager = new VerticalFieldManager(Manager.NO_VERTICAL_SCROLL | Manager.NO_VERTICAL_SCROLLBAR | Manager.USE_ALL_WIDTH | Manager.USE_ALL_HEIGHT) {
// to draw the background image.
public void paint(Graphics graphics) {
graphics.drawBitmap(0, 0, Display.getWidth(), Display.getHeight(), backgroundBitmap, 0, 0);
super.paint(graphics);
}
};
this.add(bgManager);

Here is the documentation for doing this 。它指出,在较新版本的操作系统中,使用 BackgroundFactory 方法创建背景、使用位图、渐变、颜色等可能更容易。不过,这只是另一种选择。

关于java - 如何设置背景图片完全填满屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14511576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com