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);
}
}
ラインlayoutchild(mtxt、50、500);編集フィールドの幅と高さを設定する必要があります。それはそうしますが、幅だけではそうです。高さは一定です。 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 = 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