2011-12-19 7 views
7

Trong ứng dụng của tôi, tôi có 2 loại editfields. Một trong số chúng hoạt động giống như một vùng biên tập một dòng, trường hợp khác hoạt động như editfield nhiều dòng (editarea). Trong màn hình này tôi có một tiêu đề, một editfield và một editarea. Khi tôi nhập một số văn bản vào editfield, nó sẽ nén văn bản và con trỏ. Nhưng, khi tôi nhập một số văn bản vào editarea bao gồm ký tự đuôi (y, g, q, p) editarea chiều cao đang thay đổi và editfield hoạt động bình thường. Nếu tôi không nhập vào các ký tự đuôi thì không thay đổi.editfield weird height

Đây là lớp editarea tôi:

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 -> editfield

LABEL2 -> editarea

enter image description here enter image description here

+0

bạn có thể giải thích ngắn gọn không? –

+0

tôi cũng đã giải thích trong câu hỏi thực sự. Trong hình ảnh bên trái bạn có thể thấy, có một vấn đề cắt một nửa của con trỏ là hơn ký tự đầu tiên, một nửa của nó là ký tự cuối cùng. Nếu bạn gõ một số ký tự đuôi thì lỗi cắt không còn nữa. –

+0

bạn có thể vui lòng đến đây chúng tôi sẽ thảo luận thêm về http://chat.stackoverflow.com/rooms/4014/knowledge-sharing-center-for-blackberry-and-java –

Trả lời

1

này là bởi vì bạn đang làm cho kích thước thay đổi bằng cách sử dụng

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

thay vì điều này, hãy thử đưa ra một số chiều cao cố định. ví dụ

height= Graphics.getScreenHeight()/5; 

hoặc bạn cũng có thể sử dụng setExtent bên trong phương pháp sublayout của người quản lý

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

Tôi nghĩ rằng nó sẽ làm việc. Xin vui lòng cho tôi biết

+0

editfield này có kích thước cố định hay không nhưng chỉnh sửa không được sửa bởi vì chúng tôi không biết số lượng người dùng sẽ nhập vào. Ngoài ra tôi đặt mức độ bên trong phương thức sublayout bằng cách ghi đè nó như bạn đã nói. chiều cao của editarea kỳ lạ là 38 khi được khởi tạo, khi người dùng đặt các ký tự đuôi, nó thay đổi thành 39. Có vấn đề tôi nghĩ. –

1

Về bức tranh con trỏ - bạn đã ghi đè drawFocus hoặc/và onFocus hoặc/và onUnfocus và không sơn lại đúng lúc nào đó.

+0

i overrode onFocus và onUnfocus. thành phần tùy chỉnh mà tôi đã thêm cùng một màn hình trong các hình ảnh sẽ hoạt động khác nhau. Nếu có vấn đề về hình ảnh bên trái, vấn đề phải ở lại ở hình ảnh bên phải. nguồn gốc của vấn đề là thành phần editarea tôi nghĩ nhưng tôi không thể giải quyết nó. –