2014-07-24 3 views
0

나는 새로운 blackberry 7 개발입니다. enter image description here 나는 스티커가 있고 나는 res 폴더에 스티커가있는 채팅 응용 프로그램을하고 있습니다. 그리고 지금은 숨기기/표시 옵션이있는 editfield 아래의 채팅 화면에 추가하고 싶습니다. 그리고 this.hease를 어떻게하는지 잘 모릅니다. 나는 많이 찾았지만 대답을 얻지 못했습니다.아래의 스티커 editfield hide/show blackberry

당신은 옆에있는 editfield가있는 이미지를 볼 수 있습니다. hide/show와 함께 버튼을 가지고 싶습니다. 그리고 editfield 아래에는 스티커 목록이 있습니다. 도와주세요.

+1

나는이 기능이 자신의 일부를 구현하고 다시 정확한 코딩 질문 올하려고 좋습니다. 화면 (또는 화면에 추가 된 관리자)을 제거하여 추가하여 항목을 숨기거나 표시합니다. 따라서이 화면에 ButtonField를 추가하고 ButtonField 변경 리스너가 추가 필드를 추가하게하십시오. –

답변

0

많은 시간이 지나면 지금 채팅 UI를 확인하고 있습니다. 관리자가 사용하는 스티커를 숨기고 보여 주면서 얻었습니다.

enter image description here

코드를 다음과 같이

VerticalFieldManager emojiiVerticalScroll = new VerticalFieldManager(USE_ALL_WIDTH); 
VerticalFieldManager stickerhorizontalScroll = new VerticalFieldManager(USE_ALL_WIDTH | VERTICAL_SCROLL | VERTICAL_SCROLLBAR) { 

    protected void sublayout(int maxWidth, int maxHeight) { 
     setExtent(maxWidth, 250); 
     super.sublayout(maxWidth, 250); 
    } 
}; 

emojiiBitmapField2 = new BitmapField(emojii1, Field.FIELD_HCENTER | Field.FOCUSABLE) { 

    protected void drawFocus(Graphics graphics, boolean on) { 
     graphics.setBackgroundColor(0xc4c4c4); 
     super.drawFocus(graphics, on); 
    }; 

    protected boolean navigationClick(int status, int time) { 
     fieldChangeNotify(1); 
     return true; 
    }; 
}; 

Bitmap stickers = Bitmap.getBitmapResource("img/s0010.png"); 
stickers = bestFit(stickers, Display.getWidth()/3 - 60, Display.getHeight()/3, 0); 
stikersField = new BitmapField(stickers, Field.FOCUSABLE | DrawStyle.RIGHT) { 

    protected void layout(int width, int height) { 
     setExtent(60, 60); 
     super.layout(60, 60); 
    } 

    protected void drawFocus(Graphics graphics, boolean on) { 
     graphics.setBackgroundColor(0xc4c4c4); 
     super.drawFocus(graphics, on); 
    } 

    protected boolean navigationClick(int status, int time) { 
     fieldChangeNotify(1); 
     return true; 
    } 
}; 

가 로컬 저장소에서 모든 스티커를 확인하고 관리자로 추가 할 수 있습니다.

stickerhorizontalScroll.add(emojiiBitmapField2); 
    emojiiBitmapField2.setChangeListener(new FieldChangeListener() { 

     Row r; 

     public void fieldChanged(Field field, int context) { 
      openDatabse(); 
      int i = field.getIndex() + 1; 
      try { 
       // 1. create a SQLite DB 
       // 3 insert a record 
       // 4 query the record 
       Statement st3 = db.createStatement("SELECT Name,ImageName FROM Smilies where id=" + i); 
       try { 
        st3.prepare(); 
       } catch (Exception e) { 
        Dialog.alert("Exception" + e.getMessage()); 
       } 
       Cursor c = st3.getCursor(); 
       while (c.next()) { 
        r = c.getRow(); 
        stickerImageName = r.getString(1); 
       } 
       st3.close(); 
       closeDatabase(); 
      } catch (Exception e) { 
       System.out.println(e.getMessage()); 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

하단 관리자를 표시하거나 숨기려면 부울 변수를 사용하십시오.

stikersField.setChangeListener(new FieldChangeListener() { 

    public void fieldChanged(Field field, int context) { 
     if (!option_sticker) { 
      try { 
       scrollToBottom(); 
       ef.setFocus(); 
       emojiiVerticalScroll.add(stickerhorizontalScroll); 
      } catch (Exception e) { 
       System.out.println(e.getMessage()); 
      } 
      option_sticker = true; 
      setStatus(emojiiVerticalScroll); 
     } else { 
      option_sticker = false; 
      emojiiVerticalScroll.delete(stickerhorizontalScroll); 
      // setStatus(stickerVerticalScroll); 
      setStatus(emojiiVerticalScroll); 
     } 
    } 
}); 

enter image description here