2012-01-10 3 views
1
에 중심 있도록 만들기

처럼 나의 현재 Mainscreen 보인다 :은 RichTextField 수평 블랙 베리

RichTextField WeFix1 = new RichTextField("• Computer & Laptop", RichTextField.TEXT_JUSTIFY_HCENTER); 

    VFMTitle1 = new VerticalFieldManager(Field.USE_ALL_WIDTH| Field.NON_FOCUSABLE); 

    HFMTitle1 = new HorizontalFieldManager(FIELD_HCENTER); 

    HFMTitle1.add(WeFix1); 

    VFMTitle1.add(HFMTitle1); 
add(VFMTitle21); 

하지만이에 위치 할 필요가 :

enter image description here

디스플레이의 각 라인에 대한 현재의 코드는 같다 직선 :

+0

수단은 각 행과 배경을 원하십니까 회색 색깔? 또는 선을 긋는 것이 필요합니다. 가장 오른쪽과 왼쪽으로 화면의 가장 오른쪽에 위치합니까? –

+0

레이블 필드 대신 RichTextField를 사용합니다. – alishaik786

+0

RichTextField가 모든 너비를 사용하고 필드 옆에 필드를 추가하지 않기 때문에. 이번에는 너비와 높이를 제공하기 위해 sublayout() 메서드를 사용해야합니다. 화면 가운데 부분에 여백을 두십시오. 그래서 LabelField를 사용하는 것이 더 좋습니다 – alishaik786

답변

2

많은 가능성이 있습니다. 서비스 목록을 보유하고있는 컨테이너의 여백을 조정할 수 있습니다. 또한 사용자 정의 필드 관리자 등을 만들 수 있습니다.

옵션 1 : 조정 마진

VerticalFieldManager vfmServices = new VerticalFieldManager(VerticalFieldManager.USE_ALL_WIDTH); 

vfmServices.add(new RichTextField("• Computer & Laptop")); 
vfmServices.add(new RichTextField("• Modem/Router/Switches")); 
vfmServices.add(new RichTextField("• Printer/Scanner")); 
vfmServices.add(new RichTextField("• Tablet")); 

final int horizontalMargin = 30; 
vfmServices.setMargin(0, horizontalMargin, 0, horizontalMargin); 

add(vfmServices); 

옵션 2 : 사용자 정의 필드 매니저를 사용

VerticalFieldManager vfmServiceLists = new VerticalFieldManager(VerticalFieldManager.USE_ALL_WIDTH); 

vfmServiceLists.add(new RichTextField("• Computer & Laptop")); 
vfmServiceLists.add(new RichTextField("• Modem/Router/Switches")); 
vfmServiceLists.add(new RichTextField("• Printer/Scanner")); 
vfmServiceLists.add(new RichTextField("• Tablet")); 

Manager mListContainer = new Manager(Manager.USE_ALL_WIDTH) { 

    final int horizontalMargin = 30; 

    protected void sublayout(int width, int height) { 
     // this manager designed to contain only one list container. 
     if (getFieldCount() == 1) { 
      Field child = getField(0); 
      layoutChild(child, width - 2 * horizontalMargin, height); 
      // adjust manager height. 
      height = child.getHeight(); 
      setPositionChild(child, horizontalMargin, 0); 
     } 

     setExtent(width, height);  
    }   
}; 

mListContainer.add(vfmServiceLists); 
add(mListContainer); 

[추가 나중에] 대신 레이블 필드를 사용하는 경우 alishaik786으로

는 의견에 제안 RichTextField의 경우 여백을 사용하지 않는 다음 코드를 확인할 수 있습니다.

VerticalFieldManager vfmServiceLists = new VerticalFieldManager(); 

vfmServiceLists.add(new LabelField("• Computer & Laptop")); 
vfmServiceLists.add(new LabelField("• Modem/Router/Switches")); 
vfmServiceLists.add(new LabelField("• Printer/Scanner")); 
vfmServiceLists.add(new LabelField("• Tablet")); 

Manager mListContainer = new Manager(Manager.USE_ALL_WIDTH) { 
    protected void sublayout(int width, int height) { 
     // this manager designed to contain only one list container. 
     if (getFieldCount() == 1) { 
      Field child = getField(0); 
      layoutChild(child, width, height); 
      // adjust manager height. 
      height = child.getHeight(); 
      setPositionChild(child, (width - child.getWidth())/2, 0); 
     } 

     setExtent(width, height);  
    }   
}; 

mListContainer.add(vfmServiceLists); 
add(mListContainer); 
+0

이 코드는 모든 기기에 적합하지 않으므로 모든 기기에 horizontalMargin을 변경해야합니다. RichTextField 대신 Label 필드를 사용하십시오. 그런 다음 해결책을 얻어야합니다. RichTextField에서 원한다면 Rupak 코드 만 사용하십시오. – alishaik786

+0

예,이 코드는 모든 장치에서 작동하지 않을 수 있으며 일반적인 문제를 해결하기 위해 작성하지 않았습니다. 그러나 디스플레이 너비에 따라 여백을 조정하면 높이가 그렇게 어렵지 않습니다. – Rupak

+0

당신의 솔루션에 대해 Rupak과 @ alishaik786에 감사드립니다 ... Rupak의 마진과 RichTextField가없는 마지막 코드는 완벽한 솔루션으로 보입니다 !!!! –

1

RichTextField 대신 LabelField를 사용하는 것이 좋습니다. RichTextField에서만 결과를 얻으려면 아래 코드가 적합하지 않습니다. 그런 다음 "Rupak"코드를 사용해보십시오. 코드 아래

이을 RichTextField 대신 의 레이블 필드 사용;

public class Abc extends MainScreen 
{ 
VerticalFieldManager vertical; 
Font font=Font.getDefault().derive(Font.BOLD, 18),small_font=Font.getDefault().derive(Font.PLAIN, 15); 
LabelField labelField,labelFieldTwo; 
public Abc() 
{ 
    createGUI(); 
} 

private void createGUI() 
{ 
    vertical=new VerticalFieldManager(USE_ALL_WIDTH); 
    vertical.setBackground(BackgroundFactory.createSolidBackground(Color.GREEN)); 
    HorizontalFieldManager hor=new HorizontalFieldManager(Field.FIELD_HCENTER);  

    hor.add(new LabelField(" We Fix ", Field.NON_FOCUSABLE)); 
    hor.setFont(font); 
    hor.setPadding(5, 0, 5, 0); 
    vertical.add(hor); 

    HorizontalFieldManager hr=new HorizontalFieldManager(Field.FIELD_HCENTER); 

    hr.add(new LabelField("."));   
    hr.add(new LabelField("Computer Science & Laptop", Field.NON_FOCUSABLE)); 
    hr.setFont(small_font); 
    vertical.add(hr); 

    HorizontalFieldManager hr1=new HorizontalFieldManager(Field.FIELD_HCENTER); 

    hr1.add(new LabelField("."));  
    hr1.add(new LabelField("Modem/Router/Switches", Field.NON_FOCUSABLE)); 
    hr1.setFont(small_font); 
    vertical.add(hr1); 

    //------------------- Up to now you want like this; and you can do like this type also like left align and right align; 
    HorizontalFieldManager hr2=new HorizontalFieldManager(Field.FIELD_LEFT); 

    hr2.add(new LabelField("."));  
    hr2.add(new LabelField("Printer/Scanner", Field.NON_FOCUSABLE)); 
    hr2.setFont(small_font); 
    vertical.add(hr2); 

    HorizontalFieldManager hr3=new HorizontalFieldManager(Field.FIELD_LEFT); 

    hr3.add(new LabelField("."));  
    hr3.add(new LabelField("Tablet", Field.NON_FOCUSABLE)); 
    hr3.setFont(small_font); 
    vertical.add(hr3); 

    HorizontalFieldManager hr4=new HorizontalFieldManager(Field.FIELD_RIGHT); 

    hr4.add(new LabelField("."));  
    hr4.add(new LabelField("Printer/Scanner", Field.NON_FOCUSABLE)); 
    hr4.setFont(small_font); 
    vertical.add(hr4); 

    HorizontalFieldManager hr5=new HorizontalFieldManager(Field.FIELD_RIGHT); 

    hr5.add(new LabelField("."));  
    hr5.add(new LabelField("Tablet", Field.NON_FOCUSABLE)); 
    hr5.setFont(small_font); 
    vertical.add(hr5); 

    vertical.setPadding(0, 0, 10, 0); 
    add(vertical); 
} 
} 

나는 오른쪽 때 필드 중심을 맞 춥니 다 같이했고 왼쪽이 시도

enter image description here

+0

나는 당신이 블랙 베리에 처음 온 것 같아.당신과 우리의 의혹을 명확히하기 위해이 대화방에 올 수 있습니다 : http://chat.stackoverflow.com/rooms/4014/knowledge-sharing-center-for-blackberry-and-java – alishaik786

+0

LabelField가 필드를 정렬하는 데 도움이되지 않았습니다. 이미지 2와 같은 직선으로 .. –

+0

OHHH .......! 지금까지는 두 번째 이미지를 보지 못했습니다. – alishaik786

0

을 ..

LabelField lbl=new LabelField("• Computer & Laptop\r\n• Modem/Router/Switches\r\n• 
Printer/Scanner\r\n• Tablet",LabelField.FIELD_HCENTER);