gpt4 book ai didi

blackberry - Blackberry 中的自定义 LabelField 无法正确显示文本

转载 作者:行者123 更新时间:2023-12-03 11:19:34 24 4
gpt4 key购买 nike

我正在我的应用程序中实现 Custom LabelField。它适用于小字体,当我增加字体大小时它不会正确显示。您可以在这张图片中看到它。

enter image description here

您可以在图像中看到它只显示了一半的文本。我怎样才能克服这个问题。

这里我给出了自定义 LabelField 的代码。请告诉我我做错了什么。

public class CustomLabelField extends Field  
{
private String label;
private int fontSize;
private int foregroundColor;
private int backgroundColor;
public CustomLabelField(String label, int fontSize, int foregroundColor,
int backgroundColor,long style)
{
super(style);
this.label = label;
this.foregroundColor = foregroundColor;
this.backgroundColor = backgroundColor;
this.fontSize = fontSize;
}

protected void layout(int width, int height) {

setExtent(width, getFont().getHeight());


}

protected void paint(Graphics graphics) {

graphics.setBackgroundColor(backgroundColor);
graphics.clear();
graphics.setFont(setMyFont());
graphics.setColor(foregroundColor);
graphics.drawText(label, 0, 0, (int)(getStyle()& DrawStyle.ELLIPSIS | DrawStyle.HALIGN_MASK),getWidth() - 6);
}

// Get font for the label field
public Font setMyFont()
{
try {
FontFamily alphaSansFamily = FontFamily.forName("BBAlpha Serif");
Font appFont = alphaSansFamily.getFont(Font.PLAIN, fontSize, Ui.UNITS_pt);
return appFont;

} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

}

最佳答案

在您的layout 方法中,您将字段的高度设置为当前的默认字体高度。这意味着当您使用较大的字体绘制时,文本会被裁剪。要解决此问题,请将您的布局方法更改为:

protected void layout(int width, int height) {  

int fieldHeight = Ui.convertSize(fontSize, Ui.UNITS_pt, Ui.UNITS_px);
setExtent(width, fieldHeight);
}

这会将您想要的字体大小转换为像素,并使用它来设置您的字段高度。

关于blackberry - Blackberry 中的自定义 LabelField 无法正确显示文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10125565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com