我正在为我的BlackBerry项目创建一个搜索框,但它看起来像BlackBerry没有创建单行EditField的API。我通过扩展BasicEditField和覆盖布局和绘制等方法创建了一个自定义字段。在paint
函数体中,我使用getPreferredWidth()和getPreferredHeight()绘制了一个矩形。但光标显示在EditField的默认左上角位置。任何人都可以告诉我如何在我的文本所在的位置绘制光标吗?即通过调用drawText()在EditField的中间。黑莓 - 自定义EditField光标
2
A
回答
4
我不明白你的问题,但。
您可以创建单行编辑字段。
BasicEditField editField = new BasicEditField(BasicEditField.NO_NEWLINE);
您可以设置光标位置。
editField.setCursorPosition(offset);
+0
setCursorPosition将设置光标的位置,但不处理它连续战平场的中间 – 2010-04-19 14:29:39
3
您可以在希望重写editField的onFocus方法的位置绘制光标。
protected void onFocus(int direction) {
super.onFocus(direction);
this.setCursorPosition(this.getTextLength());
invalidate();
}
获得焦点后,该字段将光标定位在文本的末尾。 editField具有setCursorPosition和getTextLength。
希望它有帮助。
2
谢谢大家,我从Blackberry Journal获得了一个很好的解决方案。
public class ScrollingSearchBox extends HorizontalFieldManager
{
private int managerWidth;
private int managerHeight;
public ScrollingSearchBox()
{
super(Manager.NO_HORIZONTAL_SCROLL);
searchEdit = new BasicEditField(){
public int getPreferredHeight()
{
return ret;
}
public int getPreferredWidth()
{
return ret;
}
public void paint(Graphics g)
{
getManager().invalidate();
super.paint(g);
}
};
HorizontalFieldManager hfm = new HorizontalFieldManager(Manager.HORIZONTAL_SCROLL)
{
public void sublayout(int width, int height)
{
if (managerWidth == 0) {
managerWidth = searchEdit.getPreferredWidth();
}
if (managerHeight == 0) {
managerHeight = searchEdit.getPreferredHeight();
}
super.sublayout(managerWidth, managerHeight);
setExtent(managerWidth,managerHeight);
}
public void paint(Graphics g) {
super.paint(g);
}
};
searchEdit.setMaxSize(70);
hfm.add(searchEdit);
add(hfm);
}
public int getPreferredHeight()
{
int ret = 0;
return ret;
}
protected void sublayout(int maxWidth, int maxHeight)
{
int currX = 0;
int currY = 0;
Field currField;
currField = this.getField(0);
switch (ScreenConfig.getInstance().getScreen())
{
case ScreenConfig.SCREEN_320_240:
currX = 5;
currY = 3;
break;
case ScreenConfig.SCREEN_480_360:
case ScreenConfig.SCREEN_480_320:
currX = 5;
currY = 1;
break;
}
this.setPositionChild(currField, currX, currY);
this.layoutChild(currField, currField.getPreferredWidth(),
currField.getPreferredHeight());
setExtent(this.getPreferredWidth(), this.getPreferredHeight());
}
protected void paint(Graphics graphics)
{
super.paint(graphics);
graphics.drawRect(0, 0, this.getPreferredWidth(), this.getPreferredHeight());
}
}
我给这个所以它可以帮助别人。 继续分享您的代码。 谢谢。
1
如果你想删除光标,你可以重写字段的drawFocus。
protected void drawFocus(Graphics graphics, boolean on) {} // remove cursor
相关问题
- 1. 黑莓自定义EditField - 处理焦点
- 2. 黑莓 - 自定义大小EditField中
- 3. 黑莓EditField中的错误
- 4. 黑莓的多行自定义标签
- 5. 黑莓地图自定义标记
- 6. 黑莓自定义LabelField
- 7. 自定义ListField黑莓
- 8. 在Radiobutton上隐藏EditField点击黑莓
- 9. Blackberry Editfield将光标保留在righthandside
- 10. 黑莓EditField特定的文字以粗体显示
- 11. 自定义HorizontalFieldManager的wrapContent黑莓
- 12. 黑莓自定义图像按钮
- 13. 黑莓网格布局自定义
- 14. 黑莓10中的自定义字体
- 15. 黑莓中的自定义列表?
- 16. 在自定义对话框黑莓
- 17. 自定义黑莓应用上传器
- 18. 黑莓的自定义时长字段
- 19. 黑莓自定义用户界面和自定义组件
- 20. 图像到光标/自定义光标
- 21. 黑莓 - 在自定义ButtonField的中心绘制标签?
- 22. 带图标和文字的黑莓自定义ButtonField
- 23. 黑莓有光泽的tabbar
- 24. QML:自定义光标
- 25. 自定义光标java
- 26. 自定义加载光标
- 27. 多个自定义光标
- 28. 自定义光标图像
- 29. Kinect自定义光标
- 30. CSS3自定义光标
尝试重写DRAWFOCUS处理重点画 – 2010-04-19 14:26:35