7

私のアプリケーションには、2 種類の編集フィールドがあります。1 つは単一行の editfield のように動作し、もう 1 つは複数行の editfield (editarea) のように動作します。この画面には、ヘッダーが 1 つ、編集フィールドが 1 つ、編集エリアが 1 つあります。にテキストを入力するeditfieldと、テキストとカーソルがクリップされます。しかし、editarea末尾の文字 (y、g、q、p) を含むテキストを入力すると、editarea高さが変化し、editfield正常に動作します。尾行文字を入力しないと状況は変わりません。

ここに私の編集エリアクラスがあります:

public class EditAreaField extends HorizontalFieldManager{
    private net.rim.device.api.ui.component.EditField editArea;
    public EditAreaField (){
         // some code;
         editArea.setPadding(25, 10, 0, 10);    
    }
    public int getPreferredHeight() {
        int height = Math.max(editArea.getHeight(), textFont.getHeight());
        return height  + editArea.getPaddingTop();
    }
}

label1 -> 編集フィールド

label2 -> 編集エリア

ここに画像の説明を入力 ここに画像の説明を入力

4

2 に答える 2

1

カーソルの描画について - drawFocusor/and onFocusor/andをオーバーライドし、onUnfocusいつか適切に再描画しません。

于 2011-12-30T07:10:04.037 に答える
1

これは、使用して変更するサイズを作成しているためです。

    int height = Math.max(editArea.getHeight(), textFont.getHeight());

これの代わりに、一定の高さを与えるようにしてください。例えば

    height= Graphics.getScreenHeight()/5;

または、マネージャーのサブレイアウト メソッド内で setExtent を使用することもできます

     protected void sublayout(int maxWidth, int maxHeight)
            {
                layoutChild(_editField, _editField.getPreferredWidth(), _editField.getPreferredHeight());
                setPositionChild(_editField, xpos,ypos);
                setExtent(preferredHeight,preferredWidth);
            }

うまくいくと思います。私にお知らせください

于 2011-12-20T05:48:42.847 に答える