0

私がやろうとしているのは、EditFieldの高さを変更することです。これはかなり簡単に聞こえますが、私は私を夢中にさせる問題に直面しています。これが私のコードです:

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); 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();
    }
};

このコードでは、フォーカスを正しく管理できません。何を忘れますか?フィールドにカーソルが表示されません。

何か案が ?

ありがとう

4

2 に答える 2

2

あなたはそれに取る寸法を言っているのではなく、それが占めることができるスペースの最大量を指定しているのです。したがって、10、50、または500と言うと、高さ8だけを使用したい場合は、それだけになります。layout()寸法も制御する場合は、EditFieldをオーバーライドする必要があります。

于 2011-04-27T18:27:59.013 に答える
0

このようにしてみてください..カスタム編集フィールドを作成し、レイアウトメソッド内に

_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);
       }
   };
于 2011-12-01T10:53:43.543 に答える