我正在以编程方式为我的应用程序主屏幕绘制背景图像(320 * 480大小),如下所示。 屏幕确实添加了滚动条功能。屏幕也有很多其他控件,如Label,EditField等多个水平管理器。
我的问题是,当我向下滚动屏幕时,背景图像也不会占据下面的滚动部分,而是我看到白色的正常背景。它看起来不太好。所以我想知道即使屏幕向下滚动,我怎样才能放置背景图像?
public MyHomescreen()
{
super();
LabelField appTitle = new LabelField ("MyApp Title");
setTitle(appTitle);
background = Bitmap.getBitmapResource ("HomeScreen.png");
_container = new VerticalFieldManager( Manager.VERTICAL_SCROLL
| Manager.VERTICAL_SCROLLBAR ) {
protected void paint( Graphics g )
{
int y = MyHomescreen.this.getMainManager().getVerticalScroll();
g.clear();
g.drawBitmap( 0, 0, background.getWidth(),
background.getHeight(), background, 0, 0 );
super.paint( g );
}
protected void sublayout( int maxWidth, int maxHeight )
{
int width = background.getWidth();
int height = background.getHeight();
super.sublayout( width, height);
setExtent( width, height);
}
};
mainVerticalManager = new VerticalFieldManager(Manager.VERTICAL_SCROLL
| Manager.VERTICAL_SCROLLBAR)
{
protected void sublayout( int maxWidth, int maxHeight )
{
int width = background.getWidth();
int height = background.getHeight();
super.sublayout( width, height);
setExtent( width, height);
}
};
// code to add manager into the screen etc..
}
答案 0 :(得分:2)
使用两个嵌套的VerticalFieldManagers查看this forum post有关如何执行此操作的代码。
答案 1 :(得分:0)
不幸的是,您无法让图像自动为您重新定位。滚动浏览图像末尾后,您必须重新绘制图像。
我们遇到了同样的问题,我们试图重新绘制背景,但我们遇到的一个问题是GUI元素在不断变化的背景上的定位。 (如果你有一个带有白色文字的标签,它可能看起来很好,但是当你滚动并且背景也会移动时,它可能会与背景的白色部分或其他类似的问题重叠)。我们决定不使用任何滚动屏幕,并保持界面简单,并具有启动具有更多元素的其他屏幕的按钮。这样,它们不是全部在一个屏幕上,用户必须滚动很多,它解决了背景图像问题
答案 2 :(得分:0)
我解决了这个问题。不确定细节
如果内存服务,我要么做两件事之一:
A)在主屏幕上设置背景,将管理器作为主屏幕的父级,并使其字段和背景半透明;这需要油漆覆盖。实质上,您设置不透明度并绘制图像。将其留在HFM / VFM上以覆盖顶部。
B)绘制HFM / VFM的顶部,但设置不透明度主要显示焦点区域......
答案 3 :(得分:0)
另一种可能性是设置具有非常大的垂直滚动的背景图像。因此,当用户向下滚动时,用户会看到图像的底部。