Ich verwende folgenden Code für eine Auflistung. Ich habe RichTextField
für Einträge der Liste verwendet.Blackberry RichTextField Fokus Prob
public class ListScreen extends MainScreen {
private UiApplication application;
private VerticalFieldManager listManager;
/**
*
*/
public ListScreen() {
super(NO_VERTICAL_SCROLL | NO_HORIZONTAL_SCROLL | USE_ALL_HEIGHT
| USE_ALL_WIDTH);
// TODO Auto-generated constructor stub
this.application = UiApplication.getUiApplication();
LabelField screenHeading = new LabelField("Category",
FIELD_HCENTER) {
protected void paint(net.rim.device.api.ui.Graphics g) {
g.setColor(Color.WHITE);
super.paint(g);
}
};
final VerticalFieldManager labelMngr = new VerticalFieldManager(USE_ALL_WIDTH);
labelMngr.setBackground(BackgroundFactory
.createBitmapBackground(LangValue.labelbg));
labelMngr.add(screenHeading);
labelMngr.setPadding(5, 0, 5, 0);
add(labelMngr);
try {
listManager = new VerticalFieldManager(Manager.VERTICAL_SCROLL
| Manager.VERTICAL_SCROLLBAR) {
protected void sublayout(int maxWidth, int maxHeight) {
int width = Display.getWidth();
int height = Display.getHeight()
- labelMngr.getHeight();
super.sublayout(width, height);
setExtent(width, height);
}
};
listManager.setPadding(5, 0, 5, 0);
int i=0;
RichTextField rtf;
Background background = BackgroundFactory
.createSolidBackground(Color.WHITE);
Border border = BorderFactory.createSimpleBorder(new XYEdges(0, 0,
2, 0));
CategoryHelper categoryHelper = new CategoryHelper();
final String[][] cetegoryList = categoryHelper.getCategoryList();
for(; i < cetegoryList.length ; i++) {
rtf = new RichTextField(cetegoryList[i][1], Field.FOCUSABLE) {
protected boolean navigationClick(int status, int time) {
fieldChangeNotify(1);
return true;
}
protected boolean touchEvent(
net.rim.device.api.ui.TouchEvent message) {
if (TouchEvent.CLICK == message.getEvent()) {
FieldChangeListener listener = getChangeListener();
if (null != listener)
listener.fieldChanged(this, 1);
}
return super.touchEvent(message);
}
};
rtf.setBackground(Field.VISUAL_STATE_NORMAL, background);
rtf.setBorder(border);
rtf.setPadding(1, 2, 1, 3);
rtf.setCookie(new Category(Integer.parseInt(cetegoryList[i][0]),cetegoryList[i][1]));
rtf.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field field, int context) {
// Dialog.alert("play the video");
// System.out.print("play the video");
// code for play video
}
});
listManager.add(rtf);
}
if (i == 0) {
listManager.add(new RichTextField("No word found."));
}
add(listManager);
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
Es arbeitet für Simulator in Ordnung. Ich kann die Liste scrollen und den Fokus auf jedes Objekt setzen, indem ich scrolle und das fokussierte Objekt blaue Markierung bekomme. Aber wenn ich BB-Gerät teste, ist das Objekt fokussiert, aber der fokussierte Zustand ist nicht sichtbar und unverändert in der Farbe, was bedeutet, dass der Benutzer nicht identifizieren kann, welcher fokussiert ist. Was ist ein Problem in meinem Code?
Könnte ein Problem mit der Betriebssystemversion sein – tipycalFlow