黑莓自定义HorizontalFieldManager – 千丝海阁

首页 » 黑莓开发 » 黑莓自定义HorizontalFieldManager

黑莓自定义HorizontalFieldManager

1823 0

关于对齐,其实能说很多。它的对齐方式太复杂,不是一句两句就能说清的。

就比如labelfield可以直接靠右对齐,而其它的又不行,碰到这种情况,那么只能自己写自己的manager来控制各个部件的位置了。

群里好几个星期都有人问这个manager里的对齐到底怎么设置,回答了自定义,重写layout也很多遍了,可能有些人还是不怎么明白,

那么这一篇就让大家彻底的明白明白吧。

黑莓 对齐

如上图,左边是labelfield,右边是editfield,如果直接套用HorizontalFieldManager,我想是做不出这个效果的,我没有试过,不知道哪位高手能够实现。

但是通过重写layout,很容易的可以实现这个对齐方式。

class MyHorizontalFieldManager extends HorizontalFieldManager
{
private EditField myedit;
private LabelField mylabel;
public MyHorizontalFieldManager(LabelField l1, EditField e1) {
super();
mylabel = l1;
myedit = e1;
LabelField leftlabel = mylabel;
add(leftlabel);
EditField rightedit = myedit;
add(rightedit);
}
protected void sublayout( int maxWidth, int maxHeight )
{
super.sublayout( maxWidth, maxHeight );
int width = getWidth();
EditField rightedit = getRightEdit();
if (rightedit != null ) {
int x = width – Font.getDefault().getAdvance(rightedit.getText()) ;
int y = 0;
setPositionChild( rightedit, x, y );
}
}
private LabelField getLeftLabel()
{
return mylabel;
}
private void setLeftLabel( LabelField leftlabel )
{
this.mylabel = leftlabel;
}
private EditField getRightEdit()
{
return myedit;
}
private void setRightEdit( EditField rightedit)
{
this.myedit = rightedit;
}
}

我想通过上述代码,大家应该能学会如果自定义manager了,重写layout了吧。

文章评分1次,平均分5.0

本文原始地址:https://www.tiandiyoyo.com/2009/12/%e9%bb%91%e8%8e%93%e8%87%aa%e5%ae%9a%e4%b9%89horizontalfieldmanager/
本站所有文章,除了特别注明外,均为本站原创,转载请注明出处来自www.tiandiyoyo.com

您可能还会对以下文章感兴趣:

评论前先开启评论开关: