我正在尝试在我的黑莓应用程序中显示一个网站,但浏览器字段小于屏幕高度,我不能使它的大小相同。
正在加载的页面实际上比屏幕小,但该网站专为移动设备而设计,非常适合iphone webview,blabkberry浏览器以及firefox和chrome。
我的代码如下:
manager = new VerticalFieldManager(VerticalFieldManager.VERTICAL_SCROLL | VerticalFieldManager.HORIZONTAL_SCROLL)
{
protected void sublayout(int maxWidth, int maxHeight)
{
super.sublayout(maxWidth, maxHeight);
setExtent(Display.getWidth(), Display.getHeight());
}
};
manager.setBackground(BackgroundFactory.createSolidBackground(Color.RED));
BrowserFieldConfig myBrowserFieldConfig = new BrowserFieldConfig();
myBrowserFieldConfig.setProperty(BrowserFieldConfig.ALLOW_CS_XHR, Boolean.TRUE);
myBrowserFieldConfig.setProperty(BrowserFieldConfig.JAVASCRIPT_ENABLED, Boolean.TRUE);
myBrowserFieldConfig.setProperty(BrowserFieldConfig.INITIAL_SCALE, new Float(1));
browserField = new BrowserField(myBrowserFieldConfig);
browserField.requestContent(link);
manager.add(browserField);
我得到的效果如下:当我加载此屏幕时,孔屏幕为红色(经理背景)。之后屏幕变为白色(我认为这是浏览器字段),然后当网页加载时,屏幕再次变为红色,白色部分缩小到行高,并随着网页元素开始显示而增长。问题是该页面应该适合所有屏幕,就像在iPhone和自定义浏览器中一样。
OBS:我正在使用黑莓OS版本6
答案 0 :(得分:5)
这段代码用html:
<meta name="viewport" content="width=device-width,height=device-height,minimum-scale=1, maximum-scale=1" />
可以在客户端上替换为:
config = new BrowserFieldConfig();
config.setProperty(BrowserFieldConfig.VIEWPORT_WIDTH, new Integer(
Display.getWidth()));
config.setProperty(BrowserFieldConfig.INITIAL_SCALE, new Float(1.0));
config.setProperty(BrowserFieldConfig.USER_SCALABLE, Boolean.FALSE);
browserField = new BrowserField(config);
答案 1 :(得分:4)
我不知道我的解决方案是否对您有所帮助,但是我遇到了与您相同的问题,花了几个小时后我终于通过在我的html页面的标题部分添加以下行来修复它:
<meta name="viewport" content="width=device-width,height=device-height,minimum-scale=1, maximum-scale=1" />
高度=设备高度修复了我的问题
答案 2 :(得分:1)
试试这样:
protected void sublayout(int maxWidth, int maxHeight)
{
super.sublayout(Display.getWidth(), Display.getHeight());
setExtent(Display.getWidth(), Display.getHeight());
}
答案 3 :(得分:0)
尝试在子布局中传递Display.getHeight()而不是f maxHeight
答案 4 :(得分:0)
试试这个
class MyFieldManager extends VerticalFieldManager
{
int width;
int height;
MyFieldManager(int w,int h)
{
super(Manager.VERTICAL_SCROLL | Manager.HORIZONTAL_SCROLL );
width=w;
height=h;
}
public void sublayout(int w,int h)
{
super.sublayout(w, h);
setExtent(width,height);
}
}
BrowserFieldConfig config = new BrowserFieldConfig();
config.setProperty(BrowserFieldConfig.ALLOW_CS_XHR, Boolean.TRUE);
config.setProperty(BrowserFieldConfig.INITIAL_SCALE, new Float(0.5));
MyFieldManager m=new MyFieldManager(Display.getWidth()/2,Display.getHeight()/2);
add(m);
BrowserField _browserField = new BrowserField(config);
_browserField.addListener(new InnerBrowserListener());
m.add(_browserField);