2009-08-28 3 views
0

나는 BitmapFields에 HorizontalFieldManager &을 추가로 만들었습니다.Blackberry Storm의 HorizontalFieldManager에서 BitmapFields를 연속적으로 표시 할 때의 문제

Blackberry Storm에서 Display.getWidth()는 480입니다. 런타임에서 만들 때 화면의 왼쪽에 일부 BitmapFields를 추가하려면 먼저 450을 사용하십시오. & 화면의 RHS에서 시작시 2 BitmapFields를 추가하십시오. I 생성자 첨가 개시 R로 표시 할

2 BimapFields 내가 런타임 R에 작성있어 & 다른 BitmapFields 내가 RHS & bitmapField [에서 startBitmapField & endBitmapField 원하는 ..

class MyCanvas extends MainScreen 
{ 

    MyCanvas() 
    { 

     hfm_BitmapField = new HorizontalFieldManager(){ 
      protected void sublayout(int maxWidth, int maxHeight) { 
      super.sublayout(maxWidth, maxHeight); 
      setExtent(Display.getWidth()-30, 60); 
      } 
     }; 


     startBitmap = Bitmap.getBitmapResource("start.png"); 
     startBitmapField = new BitmapField(startBitmap, BitmapField.ACTION_INVOKE |   BitmapField.FIELD_HCENTER | BitmapField.FIELD_RIGHT); 
     hfm_BitmapField.add(startBitmapField); 

     endBitmap = Bitmap.getBitmapResource("end.png"); 
     endBitmapField = new BitmapField(endBitmap, BitmapField.ACTION_INVOKE |   BitmapField.FIELD_HCENTER | BitmapField.FIELD_RIGHT); 
     hfm_BitmapField.add(endBitmapField); 

     drawBitmap(); 
} 


public void drawBitmap() 
{ 
     bitmap[i] = new Bitmap(50, 50); 
     Graphics g = new Graphics(bitmap[i]); 
     g.drawLine(5,5,25,25); 
     bitmapField[i] = new BitmapField(bitmap[i]); 

     synchronized(UiApplication.getEventLock()) { hfm.add(bitmapField[i]); } 
} 

같은 afterwords 추가 i] 런타임에 HorizontalFieldManagers의 LHS에서 만드는 중입니다.

2 HorizontalFieldManagers를 추가하려고합니다. 1 bitmapField [i] & startBitmapField에 대해 1 & endBitmapField. 그러나 2 개의 HorizontalFieldManagers 또는 다른 FieldManagers를 한 행에 추가하는 방법은 무엇입니까?

모든 솔루션? 그것을하는 방법?

답변

5

두 개의 수평 필드 관리자를 다른 HorizontalFieldManager에 넣을 수 있습니다.

+0

안녕하세요 DaveJohnston, 고마워 .. 내 문제를 해결했습니다 ... – Shreyas

+0

문제가 해결 되었다면 답을 올바른 해결책으로 표시해야합니다. 감사 : D – DaveJohnston

2

정렬 플래그를 사용하는 대신 하위 레이아웃 메서드에 추가해보십시오.

관리자 (hfm)의 각 하위에 대해 setPositionChild를 호출해야합니다. 당신이 원하는 경우에 따라서 오른쪽 정렬과 수직이 같은 것을 할 것 중심 :

setPositionChild (deleteButton, hfm.getPreferredWidth() - deleteButton.getPreferredWidth(), (hfm.getPreferredHeight()/2) - (deleteButton.getPreferredHeight을()/2));

이렇게하면 삭제 버튼의 왼쪽 상단이 hfm 내에서 오른쪽 정렬되고 수직 가운데에 배치되도록 올바른 위치에 놓이게됩니다.

+0

감사합니다. DaveJohnston. 그것은 내 문제를 해결 ... 나는 또한 대답을 올바른 것으로 표시했다. 정확한 해결책을 많이 가져 주셔서 감사합니다 .... – Shreyas

+0

나는 정확한 답변을 표시했지만 내 평판은 15 이하입니다. – Shreyas

0

응용 프로그램을 볼 때 문제가있을 수 있습니다. 터치 이벤트를 사용하지 않으려면 개별 필드 관리자에 사용자 정의 된 각 필드가 있어야합니다. super.sublayout (width, height) 대신 layoutChild를 사용하면 화면에서 탐색이 비활성화되므로 사용하지 마십시오. navigationMovement를 사용하여 필드 탐색을 사용자 정의하십시오. More : super.sublayout 함수를 사용하지 않으면 필드의 일부가 레이아웃되지 않을 수 있으므로 사용하는 것이 좋습니다.

기타 : 모든 터치 기반 응용 프로그램에 Storm 에뮬레이터를 사용하고 호환성 문제에 대해 다른 모든 릴리스에 대해 4.5 Pearl 에뮬레이터 JDE를 사용하십시오.

관련 문제