Tableiste in Blackberry ohne ToolBarManager

Bildbeschreibung hier eingeben

Ich möchte eine Toolbar mit genauem Look and Feel für mein Blackberry-Projekt erstellen. Jede Hilfe wird sehr geschätzt. Bitte beachten Sie, dass ich ToolBarManager nicht verwenden kann. Mein Projekt sollte alle Geräte nach OS 5.0 unterstützen

Vielen Dank

Dies ist ein Beispielcode, mit dem Sie Tabs in Blackberry erstellen können. Ich hatte insgesamt 3 Bildschirme nach der class statUp (die UiApplication erweitert)

  1. LoadingScreen.java

    public class LoadingScreen extends MainScreen { int current_index=0; BottomPanel bottomPanel; public LoadingScreen(int current_index) { this.current_index=current_index; bottomPanel=new BottomPanel(current_index); } public void createGUI() { setTitle("Loading Screen"); VerticalFieldManager vertical=new VerticalFieldManager(USE_ALL_WIDTH) { protected void sublayout(int maxWidth, int maxHeight) { super.sublayout(Display.getWidth(), 150); setExtent(Display.getWidth(), 150); } }; vertical.setBackground(BackgroundFactory.createSolidBackground(Color.GREEN)); ButtonField button=new ButtonField("Click"); vertical.add(button); add(vertical); setStatus(bottomPanel); } } 
  2. BottomPanel.java

     public class BottomPanel extends VerticalFieldManager implements FieldChangeListener { Bitmap news_bit=Bitmap.getBitmapResource("news.png");//these images are cutting according to device requirement; Bitmap news_bit_hover=Bitmap.getBitmapResource("news_h.png"); Bitmap settings_bit=Bitmap.getBitmapResource("settings.png"); Bitmap settings_bit_hover=Bitmap.getBitmapResource("settings_h.png"); Bitmap about_bit=Bitmap.getBitmapResource("about.png"); Bitmap about_bit_hover=Bitmap.getBitmapResource("about_h.png"); PictureBackgroundButtonField news_pic,settings_pic,about_pic; HorizontalFieldManager hr; int current_index=0; public BottomPanel(int current_index) { super(FOCUSABLE); this.current_index=current_index; VerticalFieldManager ver=new VerticalFieldManager(USE_ALL_WIDTH|USE_ALL_HEIGHT) { protected void sublayout(int width, int height) { super.sublayout(width, news_bit.getHeight()); setExtent(width, news_bit.getHeight()); } }; hr=new HorizontalFieldManager(FIELD_HCENTER); if(current_index==1) { news_pic=new PictureBackgroundButtonField(news_bit.getWidth(),news_bit.getHeight(), Field.NON_FOCUSABLE|Field.FIELD_VCENTER, news_bit_hover, news_bit_hover); } else { news_pic=new PictureBackgroundButtonField(news_bit.getWidth(),news_bit.getHeight(), Field.FOCUSABLE|Field.FIELD_VCENTER, news_bit, news_bit_hover); } news_pic.setChangeListener(this); hr.add(news_pic); if(current_index==2) { settings_pic=new PictureBackgroundButtonField(settings_bit.getWidth(),settings_bit.getHeight(), Field.NON_FOCUSABLE|Field.FIELD_VCENTER, settings_bit_hover, settings_bit_hover); } else { settings_pic=new PictureBackgroundButtonField(settings_bit.getWidth(),settings_bit.getHeight(), Field.FOCUSABLE|Field.FIELD_VCENTER, settings_bit, settings_bit_hover); } settings_pic.setChangeListener(this); hr.add(settings_pic); if(current_index==3) { about_pic=new PictureBackgroundButtonField(about_bit.getWidth(),about_bit.getHeight(),Field.NON_FOCUSABLE|Field.FIELD_VCENTER, about_bit_hover, about_bit_hover); } else { about_pic=new PictureBackgroundButtonField(about_bit.getWidth(),about_bit.getHeight(), Field.FOCUSABLE|Field.FIELD_VCENTER, about_bit, about_bit_hover); } about_pic.setChangeListener(this); hr.add(about_pic); ver.add(hr); add(ver); } public void fieldChanged(Field field, int context) { if(field==news_pic) { LoadingScreen loadingScreen=new LoadingScreen(1); UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen()); UiApplication.getUiApplication().pushScreen(loadingScreen); loadingScreen.createGUI(); } else if(field==settings_pic) { LoadingScreen loadingScreen=new LoadingScreen(2); UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen()); UiApplication.getUiApplication().pushScreen(loadingScreen); loadingScreen.createGUI(); } else if(field==about_pic) { LoadingScreen loadingScreen=new LoadingScreen(3); UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen()); UiApplication.getUiApplication().pushScreen(loadingScreen); loadingScreen.createGUI(); } } } 
  3. PictureBackgroundButtonField.java

     public class PictureBackgroundButtonField extends Field { private String _label; private int _labelHeight; private int _labelWidth; private Font _font; private Bitmap _currentPicture; private Bitmap _onPicture ; private Bitmap _offPicture ; public PictureBackgroundButtonField(int width,int height, long style, Bitmap picture, Bitmap selectedPic) { super(style); _font = getFont(); _label = ""; _labelHeight = height; _labelWidth = width; _currentPicture = picture; _onPicture = selectedPic; _offPicture = picture; } public int getPreferredHeight() { return _labelHeight; } public int getPreferredWidth() { return _labelWidth; } protected void onFocus(int direction) { _currentPicture = _onPicture; invalidate(); } protected void onUnfocus() { _currentPicture = _offPicture; invalidate(); } protected void drawFocus(Graphics graphics, boolean on) { // Do nothing } protected void layout(int width, int height) { setExtent( getPreferredWidth(), getPreferredHeight()); } protected void paint(Graphics graphics) { graphics.drawBitmap(0, 0, getPreferredWidth(), getPreferredHeight(), _currentPicture, 0, 0); graphics.setFont(_font); graphics.drawText(_label, 4, 2, (int)( getStyle() & DrawStyle.ELLIPSIS | DrawStyle.HALIGN_MASK ), getWidth() - 6 ); } protected boolean navigationClick(int status, int time) { fieldChangeNotify(1); return true; } } 

Probieren Sie diesen Code aus und sehen Sie sich den Unterschied an.

setStatus(bottomPanel); im Konstruktor des LoadingScreen .