【发布时间】:2013-05-09 09:27:30
【问题描述】:
我是 Blackberry Field 的新手,我想创建一个自定义的水平滚动视图,它应该与下图完全一样。任何帮助将不胜感激
我正在使用 Blackberry Simulator 9900,提前致谢。
【问题讨论】:
标签: blackberry textfield horizontalscrollview
我是 Blackberry Field 的新手,我想创建一个自定义的水平滚动视图,它应该与下图完全一样。任何帮助将不胜感激
我正在使用 Blackberry Simulator 9900,提前致谢。
【问题讨论】:
标签: blackberry textfield horizontalscrollview
我猜中间部分只能滚动,对吧?
您必须有一个带 HORIZONTAL_SCROLL 的 HorizontalFieldManager(中间一个)
例如HorizontalFieldManager hfm = new HorizontalFieldManager( HORIZONTAL_SCROLL );
在此管理器中添加您的自定义字段。
您必须在自定义 OuterManager 中添加 hfm。
我在这里发布我自己的代码供您参考...
private class HScroll extends MainScreen{
public HScroll() {
super( USE_ALL_WIDTH );
OuterManager father = new OuterManager( );
LabelField ll = new LabelField("<");
father.add(ll);
HorizontalFieldManager hfm = new HorizontalFieldManager( HORIZONTAL_SCROLL );
for( int i=0; i<10; i++ ){
ButtonField btn = new ButtonField(" i " + i);
hfm.add(btn);
}
father.add(hfm);
LabelField ll1 = new LabelField(">");
father.add(ll1);
add(father);
}
private class OuterManager extends net.rim.device.api.ui.Manager{
public OuterManager() {
super(USE_ALL_WIDTH);
}
protected void sublayout(int width, int height) {
int x = 0;
Field ff = getField( 0 );
Field ff2 = getField( 2 );
setPositionChild(ff, x, 0);
layoutChild(ff, ff.getPreferredWidth(), ff.getPreferredHeight());
x = x + ff.getPreferredWidth();
Field ff1 = getField( 1 );
setPositionChild(ff1, x , 0);
layoutChild(ff1, width - ff.getPreferredWidth() - ff2.getPreferredWidth() , ff1.getPreferredHeight());
x = width - ff2.getPreferredWidth();
setPositionChild(ff2, x, 0);
layoutChild(ff2, ff2.getPreferredWidth(), ff2.getPreferredHeight());
setExtent(width, height);
}
}
}
【讨论】:
ButtonField 对象,而不是 LabelFields。
LabelField 表示结束箭头,则用户无法单击它们进行滚动,这是正常行为。
HorizontalFieldManager上添加的所有项目都是ButtonFields时,我认为可以使用LabelFields作为侧箭头。