Blackberry Editfield-高度更改不有效
-
24-10-2019 - |
题
我尝试做的是简单地更改编辑场的高度。这听起来很容易,但是我面临着一个使我发疯的问题。这是我的代码:
public class CMainManager extends HorizontalFieldManager
{
EditField mtxt=new EditField(EditField.FOCUSABLE | EditField.FILTER_DEFAULT);
/* Constructeur */
public CMainManager()
{
add(mtxt);
}
public int getPreferredHeight()
{
return Display.getHeight();
}
public int getPreferredWidth()
{
return Display.getWidth();
}
protected void sublayout(int width, int height)
{
layoutChild(mtxt, 50, 500);
setPositionChild(mtxt, 0, 10);
mtxt.setBackground(
BackgroundFactory.createSolidBackground(0x000000FF));
setExtent(width, height);
}
}
Line LayoutChild(MTXT,50,500);应该设置我的Editfield的宽度和高度。它确实如此,但只有宽度。高度是恒定的。如果将其设置为500,我将获得相同的结果,就像将其设置为10一样。
对我缺少什么的想法吗?因为我确定这是我在做的一个愚蠢的错误...
谢谢
==编辑
在JPROFFIT帮助之后,我了解了我做错了什么。但是,现在它有效(我可以设置高度),我还有另一个问题。这是我的代码:
private EditField m_Txt=new EditField(EditField.FOCUSABLE |
EditField.FILTER_DEFAULT) {
protected void layout(int width, int height)
{
setExtent(Display.getWidth(), m_TxtHeight);
}
public boolean isFocusable()
{
return true;
}
protected void onFocus(int direction)
{
super.onFocus(direction);
invalidate();
}
protected void onUnfocus() {
super.onUnfocus();
invalidate();
}
};
使用此代码,我无法正确管理焦点。我忘记了什么?我在我的领域看不到光标。
任何想法 ?
谢谢
解决方案
您没有告诉它要占用的尺寸,而是指定可能占用的最大空间。因此,当您告诉它10、50或500时,如果它只想使用8个高度,那就是全部。你必须覆盖 layout()
如果您想控制其尺寸,请在Editfield上。
其他提示
尝试这样做..创建一个自定义编辑场和布局方法
_editField = new EditField("", initialValueOfTextField)
{
protected void layout(int maxWidth, int maxHeight)
{
int myWidth = getMaxSize() * getFont().getAdvance("W");// define your req width
int myHeight= 50 // your required height
super.layout(myWidth, myHeight);
}
};
不隶属于 StackOverflow