我正在开发一个应用程序,其中我在LableField
中设置了很多文本,并且希望它在模拟器8900中可滚动。为此,我已将VerticalFieldManager
放入其中。我使用LableField
使VerticalFieldManager
可滚动,并尝试使用VERTICAL_SCROLL
。但是仍然无法正常工作。
我的密码
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.system.Display;
import net.rim.device.api.ui.Color;
import net.rim.device.api.ui.Font;
import net.rim.device.api.ui.FontFamily;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.Manager;
import net.rim.device.api.ui.component.BitmapField;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.HorizontalFieldManager;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;
import net.rim.device.api.ui.decor.BackgroundFactory;
public class AboutM1 extends MainScreen {
public AboutM1() {
((VerticalFieldManager) getMainManager())
.setBackground(BackgroundFactory
.createSolidBackground(0xEDEDED));
VerticalFieldManager TOPVFM = new VerticalFieldManager(USE_ALL_WIDTH);
HorizontalFieldManager TOPHFM = new HorizontalFieldManager(
FIELD_HCENTER | FIELD_VCENTER);
// LabelField toplable = new LabelField("Welcome to");
LabelField toplable = new LabelField("\n Welcome to", FIELD_BOTTOM) {
public void paint(Graphics g) {
g.setBackgroundColor(0xECECEC);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.RED);
g.clear();
super.paint(g);
}
};
FontFamily fontFamily[] = FontFamily.getFontFamilies();
Font font = fontFamily[1].getFont(FontFamily.CBTF_FONT, 20);
font = fontFamily[1].getFont(Font.BOLD, 25);
toplable.setFont(font);
Bitmap bmp = Bitmap.getBitmapResource("logo36X36.png");
BitmapField imgField = new BitmapField(bmp, FIELD_BOTTOM);
TOPHFM.add(toplable);
TOPHFM.add(imgField);
TOPVFM.add(TOPHFM);
int width = Display.getWidth();
add(TOPVFM);
LabelField Greenline = new LabelField(
"_______________________________________") {
protected void paint(Graphics g) {
int oldColor = g.getColor();
g.setColor(Color.GREEN);
// g.fillRoundRect(0, 0, 50, 5, 7, 7);
g.setColor(oldColor);
super.paint(g);
}
};
add(Greenline);
VerticalFieldManager DescriptionVFM = new VerticalFieldManager(
VERTICAL_SCROLL);
LabelField Description = new LabelField(
"\n asdasdawqwere we r we r we rw er w er wer, groceries, sadfertewrt er te rt ert er t er t er t er t . asdasdasdasdas asd asd werwerewrt er t erter t ert.",
FIELD_HCENTER);
LabelField Description2 = new LabelField(
"\n\n\n About Us \n For customer care \n\n");
/*
* add(Description); add(Description2);
*/
DescriptionVFM.add(Description);
DescriptionVFM.add(Description2);
VerticalFieldManager BottomVFM = new VerticalFieldManager(USE_ALL_WIDTH);
HorizontalFieldManager BottomHFM = new HorizontalFieldManager(
FIELD_VCENTER);
LabelField callus = new LabelField("Call: ", FIELD_VCENTER);
LabelField Number = new LabelField("+91-79-30487400", FIELD_VCENTER) {
protected void paint(Graphics g) {
g.setColor(0x324F85);
// g.fillRoundRect(0, 0, 50, 5, 7, 7);
super.paint(g);
}
};
font = fontFamily[1].getFont(Font.BOLD, 18);
Number.setFont(font);
BottomHFM.add(callus);
BottomHFM.add(Number);
BottomVFM.add(BottomHFM);
// add(BottomVFM);
DescriptionVFM.add(BottomVFM);
add(DescriptionVFM);
}
}
最佳答案
将LabelField
的实例添加到任何FieldManager时,需要在此之后添加另一个虚拟的可聚焦字段。
在这种情况下,可以使用NullField
。尝试如下操作:
// fieldManger can be a VerticalFieldManger, HorizontalFieldManger, Manager, etc.
fieldManager.add(new LabelField("An instance of LabelField"));
fieldManager.add(new NullField(NullField.FOCUSABLE);