自定义RichTextField的drawText方法如何根据文字大小换行 – 千丝海阁

首页 » 黑莓开发 » 自定义RichTextField的drawText方法如何根据文字大小换行

自定义RichTextField的drawText方法如何根据文字大小换行

1845 0

可能标题很模糊,唉,我也说不清怎么表达。如果光是继承RichTextField,直接setText(str)就可以达到自动换行的效果。

但是我这里要用到drawText的方法,因为我需要我的文字显示在指定的x,y点上,并且还要画些东西,这样就不能用setText(),好像setText()是默认0,0,而且

drawText()无法自动换行?如果看官觉得我此文有误,请留言给我。
没有花太多时间去确认这个,我直接采用算像素,然后判断是否超过长度,超过则再次drawText。
Feelsina.twfont为str中单个汉字的最大像素。

private void writetext(Graphics g){
Font font;
font = Font.getDefault().derive(Font.PLAIN,Feelsina.twfontsize,Ui.UNITS_pt);
int d = font.getAdvance(mytext);
int l = mytext.length();
int i;
i = d/(Display.getWidth()-110);
if(i<1){
g.drawText(mytext, 30, 30);
}
else {
String str = mytext;
for (int j=0;j int p = 0;
int k = 0;
boolean flag2 = false;
if(str.length()>l/(i+1)+p){
k =font.getAdvance(str.substring(0,l/(i+1)+p));
while (k < (Display.getWidth()-110)) {
p++;
if((l/(i+1)+p)==str.length()){
flag2 = true;
break;
}
k =font.getAdvance(str.substring(0,l/(i+1)+p));
}
if(flag2)
g.drawText(str, 30,30+j*Feelsina.twfont );
else
g.drawText(str.substring(0,l/(i+1)+p-1), 30,30+j*Feelsina.twfont );
str = str.substring(l/(i+1)+p-1);
}
else
g.drawText(str, 30,30+j*Feelsina.twfont );
}
}
}

文章评分1次,平均分5.0



上一篇:去除黑莓默认的菜单full menu
下一篇:自定义Field,paint background后光标消失的另类解决方法

本文原始地址:http://www.tiandiyoyo.com/2011/01/%e8%87%aa%e5%ae%9a%e4%b9%89richtextfield%e7%9a%84drawtext%e6%96%b9%e6%b3%95%e5%a6%82%e4%bd%95%e6%a0%b9%e6%8d%ae%e6%96%87%e5%ad%97%e5%a4%a7%e5%b0%8f%e6%8d%a2%e8%a1%8c/
本站所有文章,除了特别注明外,均为本站原创,转载请注明出处来自www.tiandiyoyo.com

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

评论前先开启评论开关:


//