According to Peter Strange suggestion,
I found new solution for Single line editfield which have solved my actual problem.
Following is my CustomEditField class for Single line editfield with horizontal scrolling.
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.Manager;
import net.rim.device.api.ui.component.BasicEditField;
import net.rim.device.api.ui.container.HorizontalFieldManager;
public class CustomEditfield extends HorizontalFieldManager
{
private int managerWidth;
private int managerHeight;
BasicEditField searchEdit;
private Bitmap _currentPicture;
private int width ;
private int height ;
private final static int DEFAULT_LEFT_MARGIN = 0;
private final static int DEFAULT_RIGHT_MARGIN = 5;
private final static int DEFAULT_TOP_MARGIN = 0;
private final static int DEFAULT_BOTTOM_MARGIN = 0;
private final static int DEFAULT_LEFT_PADDING = 5;
private final static int DEFAULT_RIGHT_PADDING = 5;
private final static int DEFAULT_TOP_PADDING = 0;
private final static int DEFAULT_BOTTOM_PADDING = 0;
private int topMargin = DEFAULT_TOP_MARGIN;
private int bottomMargin = DEFAULT_BOTTOM_MARGIN;
private int leftMargin = DEFAULT_LEFT_MARGIN;
private int rightMargin = DEFAULT_RIGHT_MARGIN;
private int topPadding = DEFAULT_TOP_PADDING;
private int bottomPadding = DEFAULT_BOTTOM_PADDING;
private int leftPadding = DEFAULT_LEFT_PADDING;
private int rightPadding = DEFAULT_RIGHT_PADDING;
private int totalHorizontalEmptySpace = leftMargin + leftPadding + rightPadding + rightMargin;
private int totalVerticalEmptySpace = topMargin + topPadding + bottomPadding + bottomMargin;
public CustomEditfield(String label,String initialValue,int maxChars,long style,Bitmap image)
{
super(Manager.NO_HORIZONTAL_SCROLL);
this._currentPicture=image;
this.width=_currentPicture.getWidth();
this.height=_currentPicture.getHeight()+20;
searchEdit = new BasicEditField(label, initialValue, maxChars,style){
public int getPreferredHeight()
{
return _currentPicture.getHeight();
}
public int getPreferredWidth()
{
return _currentPicture.getWidth();
}
// public void paint(Graphics g)
// {
// getManager().invalidate();
// super.paint(g);
// }
};
searchEdit.setPadding(_currentPicture.getHeight()/7, 0, 0, 0);
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()
{
return _currentPicture.getHeight();
}
public String getText()
{
return searchEdit.getText();
}
public void setText(final String text)
{
searchEdit.setText(text);
}
protected void sublayout(int maxWidth, int maxHeight)
{
Field currField;
currField = this.getField(0);
this.setPositionChild(currField,leftMargin+leftPadding, topMargin+topPadding);
this.layoutChild(currField, this.width - totalHorizontalEmptySpace, this.height - totalVerticalEmptySpace);
setExtent(this.width, this.height);
}
protected void paint(Graphics graphics)
{
graphics.drawBitmap(0, 0, getWidth(), getHeight(), _currentPicture, 0, 0);
// graphics.drawBitmap(leftMargin, topMargin, width - (leftMargin+rightMargin), height - (topMargin+bottomMargin), _currentPicture, 5, 0);
super.paint(graphics);
// graphics.drawRect(0, 0, this.getPreferredWidth(), this.getPreferredHeight());
}
}
I have found this solution from Blackberry - Custom EditField Cursor
I am giving this so it can help others.