我有一个VerticalFieldManger
用作容器来显示自定义新闻Feed。我们的想法是将图片(BitmapField
)和标题(LabelField
)放在VerticalFieldManager
中。
我为VerticalFieldManager
提供了一些简单的自定义元素及其行为的子类,但我没有覆盖VerticalFieldManager
中声明的任何方法。
我希望BitmapField
响应触摸事件和导航点击,以打开网络浏览器以显示所需的网页。问题是VerticalFieldManager
没有获得焦点(我没想到),也没有任何子元素得到关注。
我没有子类化BitmapField和LabelField
我的子类VerticalFieldManager的构造函数:
public NewsManagerView( boolean _isClickable, long _style ) {
super( _style );
this.setIsClickable( _isClickable ); // sets flag if this should respond to click events
this.init(); // initialize ivars
this.add( this.getTitle() ); // add child fields
this.add( this.getImgFld() );
this.add( this.getUrl() );
}
实例化如下:
this.setNewsManager( new NewsManagerView(this.getIsConnected(), Field.USE_ALL_WIDTH) );
答案 0 :(得分:1)
这是一个已知问题。 我在BB支持论坛上开始了一个主题 http://supportforums.blackberry.com/t5/Java-Development/Scroll-happening-but-Vertical-Field-Manager-Not-Moving/m-p/1214481
很抱歉这不是一个真正的答案,但是目前唯一可用的解决方法
修改强> 在BB论坛上添加了一篇新帖子:
一位朋友给了我解决方案......你可以把你的经理变成一个 水平管理器然后你可以添加一个带有的空字段 可聚焦的行为,这将做到这一点
你可以试试。
答案 1 :(得分:1)
VerticalFieldManager datavfm=new VerticalFieldManager(FOCUSABLE)
{
protected void paintBackground(Graphics graphics)
{
if(!isFocus())
{
graphics.setColor( 0xDDDDDD );
graphics.fillRoundRect( 0, 0, 318, 30, 18, 18);
graphics.setColor( 0x000000 );
graphics.drawRoundRect( 0, 0, 318, 30, 18, 18);
invalidate();
}
else
{
graphics.setColor( 0x005DE7 );
graphics.fillRoundRect( 0, 0, 318, 30, 18, 18);
graphics.setColor( 0xFFFFFF );
graphics.drawRoundRect( 0, 0, 318, 30, 18, 18);
graphics.setColor( 0xFFFFFF );
invalidate();
}
}
protected void sublayout(int maxWidth,int maxHeight)
{
super.sublayout(318, 30);
super.setExtent(318, 30);
}
protected boolean navigationClick(int status,int time)
{
GetPNRStatus(strPNRNumber);
return true;
}
protected boolean keyChar(char c, int status, int time)
{
if (c == Characters.ENTER)
{
GetPNRStatus(strPNRNumber);
}
return true;
}
};