2011-12-19 12 views
7

W mojej aplikacji mam 2 typy pól edycji. Jedna z nich zachowuje się jak pole edycji pojedynczej linii, druga zachowuje się jak wieloliniowe pole edycyjne (editarea). Na tym ekranie mam jeden nagłówek, jedno pole edycji i jedną edycję. Kiedy wprowadzam jakiś tekst do editfield, klipy tekstu i kursora zostaną przycięte. Ale kiedy wprowadzam jakiś tekst do editarea, który zawiera znak tailed (y, g, q, p) editarea s zmienia się, a editfield działa normalnie. Jeśli nie wchodzę do postaci ogonowej, nie zmienia się stan.Edycja pola dziwna wysokość

Oto moja klasa editarea:

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

Czy możesz wyjaśnić krótko? –

+0

dobrze wyjaśniłem w pytaniu. Na lewym obrazku widać, że występuje tu problem z obcinaniem, połowa kursora znajduje się nad pierwszą postacią, połowa jest na ostatnim znaku. Jeśli wpiszesz jakiś znak tailed, błąd obcinania już nie istnieje. –

+0

możesz przyjść tutaj, omówimy więcej o tym http://chat.stackoverflow.com/rooms/4014/knowledge-sharing-center-for-blackberry-and-java –

Odpowiedz

1

to dlatego robicie rozmiaru, aby zmienić za pomocą

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

zamiast tego, próbuj podać stałą wysokość. na przykład

height= Graphics.getScreenHeight()/5; 

lub można również użyć setExtent wewnątrz metody sublayout kierownika

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

myślę, że będzie to działało. proszę dać mi znać

+0

editfield ma ustalony rozmiar, ale editarea nie powinien być poprawiony ponieważ nie wiemy, ile znaków wprowadzi użytkownik. Dodatkowo ustalam zakres wewnątrz metody sublayout, przesuwając go tak, jak powiedziałeś. to jest dziwna wysokość editarea wynosi 38 po zainicjowaniu, kiedy użytkownik wprowadza znaki tailed, zmienia się na 39. Istnieje problem, który myślę. –

1

O malarstwie kursora - zrobiłeś przesłonić drawFocus i/lub onFocus i/lub onUnfocus i nie przemalować właściwie kiedyś.

+0

Przełamałem onFocus i onUnfocus. Niestandardowy komponent, który dodałem ten sam ekran na obrazach, zachowuje się inaczej. Jeśli występuje problem z lewym obrazem, problem musi pozostać na odpowiednim obrazie. źródłem problemu jest komponent editarea, ale nie jestem w stanie go rozwiązać. –