我正在爲我的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