我想制作一个显示在几个MainScreens底部的标签栏,我认为创建一个类是正确的方法。
问题,因为我是新手,这并不奇怪,当我尝试在我的课程中添加一个字段时,它是如何将它放在MainScreen中的?我是否必须向我想要使用的屏幕发送某种引用?
package mypackage;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.container.HorizontalFieldManager;
public class CustomTabBar {
private HorizontalFieldManager bar;
public CustomTabBar(){
}
public void buildBar(){
bar = new HorizontalFieldManager();
add(bar); //Where am I adding this?!
Bitmap eventIcon = Bitmap.getBitmapResource("eventsicon.png");
Bitmap eventIcon_hover = Bitmap.getBitmapResource("eventsicon-hover.png");
CustomMenuField eventIconField = new CustomMenuField(eventIcon_hover,eventIcon, "TheatreScreen");
}
}
答案 0 :(得分:0)
如果要将子对象直接添加到MainScreen
,则是,您需要传递对MainScreen的引用,例如:
public class CustomTabBar {
private HorizontalFieldManager bar;
public void buildBar(MainScreen main) {
bar = new HorizontalFieldManager();
Bitmap eventIcon = Bitmap.getBitmapResource("eventsicon.png");
Bitmap eventIcon_hover = Bitmap.getBitmapResource("eventsicon-hover.png");
CustomMenuField eventIconField = new CustomMenuField(eventIcon_hover,eventIcon, "TheatreScreen");
bar.add(eventIconField);
main.add(bar);
}
}
public class MyMainScreen extends MainScreen {
private CustomTabBar tab;
public MyMainScreen() {
...
tab = new CustomTabBar();
tab.buildBar(this);
...
}
}
我认为更好的解决方案是将您的类更改为从HorizontalFieldManager
扩展而不是封装它,例如:
public class CustomTabBar extends HorizontalFieldManager {
public CustomTabBar(long style) {
super(style);
Bitmap eventIcon = Bitmap.getBitmapResource("eventsicon.png");
Bitmap eventIcon_hover = Bitmap.getBitmapResource("eventsicon-hover.png");
CustomMenuField eventIconField = new CustomMenuField(eventIcon_hover,eventIcon, "TheatreScreen");
add(eventIconField);
}
}
public class MyMainScreen extends MainScreen {
private CustomTabBar tab;
public MyMainScreen() {
...
tab = new CustomTabBar(...);
add(tab);
...
}
}
答案 1 :(得分:0)
您需要MainScreen对象,并且您想使用setStatus(this)将标签栏放在屏幕底部。 MainScreen的状态部分保持可见,并始终位于屏幕的底部。横幅始终位于顶部,标题位于横幅下方。其他所有内容都位于标题/横幅和屏幕状态部分之间的可滚动区域。