gpt4 book ai didi

blackberry - 如何在黑莓的 labelField 中水平滚动

转载 作者:行者123 更新时间:2023-12-01 05:13:27 25 4
gpt4 key购买 nike

我想在标签字段中水平滚动。

In Below image, Long Text which is E-mail ID is not scrolled.

我正在自定义 GridField 管理器中添加这个 LabelField。这是自定义 GridField 管理器的代码。

public class CustomGridFieldManager extends Manager {
private int[] columnWidths;
private int columns;
private int allRowHeight = -1;


public CustomGridFieldManager(int columns, long style) {
super(style);
this.columns = columns;
}


public CustomGridFieldManager(int[] columnWidths, long style) {
super(style);
this.columnWidths = columnWidths;
this.columns = columnWidths.length;

}

public CustomGridFieldManager(int[] columnWidths, int rowHeight, long style) {
this(columnWidths, style);
this.allRowHeight = rowHeight;
}

protected boolean navigationMovement(int dx, int dy, int status, int time) {

int focusIndex = getFieldWithFocusIndex();
while(dy > 0) {
focusIndex += columns;
if (focusIndex >= getFieldCount()) {
return false; // Focus moves out of this manager
}
else {
Field f = getField(focusIndex);
if (f.isFocusable()) { // Only move the focus onto focusable fields
f.setFocus();
dy--;
}
}
}
while(dy < 0) {
focusIndex -= columns;
if (focusIndex < 0) {
return false;
}
else {
Field f = getField(focusIndex);
if (f.isFocusable()) {
f.setFocus();
dy++;
}
}
}

while(dx > 0) {
focusIndex ++;
if (focusIndex >= getFieldCount()) {
return false;
}
else {
Field f = getField(focusIndex);
if (f.isFocusable()) {
f.setFocus();
dx--;
}
}
}
while(dx < 0) {
focusIndex --;
if (focusIndex < 0) {
return false;
}
else {
Field f = getField(focusIndex);
if (f.isFocusable()) {
f.setFocus();
dx++;
}
}
}
return true;
}

protected void sublayout(int width, int height) {
int y = 0;
if (columnWidths == null) {
columnWidths = new int[columns];
for(int i = 0; i < columns; i++) {
columnWidths[i] = width/columns;
}
}
Field[] fields = new Field[columnWidths.length];
int currentColumn = 0;
int rowHeight = 0;
for(int i = 0; i < getFieldCount(); i++) {
fields[currentColumn] = getField(i);
layoutChild(fields[currentColumn], columnWidths[currentColumn], height-y);
if (fields[currentColumn].getHeight() > rowHeight) {
rowHeight = fields[currentColumn].getHeight();
}
currentColumn++;
if (currentColumn == columnWidths.length || i == getFieldCount()-1) {
int x = 0;
if (this.allRowHeight >= 0) {
rowHeight = this.allRowHeight;
}
for(int c = 0; c < currentColumn; c++) {
long fieldStyle = fields[c].getStyle();
int fieldXOffset = 0;
long fieldHalign = fieldStyle & Field.FIELD_HALIGN_MASK;
if (fieldHalign == Field.FIELD_RIGHT) {
fieldXOffset = columnWidths[c] - fields[c].getWidth();
}
else if (fieldHalign == Field.FIELD_HCENTER) {
fieldXOffset = (columnWidths[c]-fields[c].getWidth())/2;
}

int fieldYOffset = 0;
long fieldValign = fieldStyle & Field.FIELD_VALIGN_MASK;
if (fieldValign == Field.FIELD_BOTTOM) {
fieldYOffset = rowHeight - fields[c].getHeight();
}
else if (fieldValign == Field.FIELD_VCENTER) {
fieldYOffset = (rowHeight-fields[c].getHeight())/2;
}

setPositionChild(fields[c], x+fieldXOffset, y + fieldYOffset);
x += columnWidths[c];
}
currentColumn = 0;
y += rowHeight;
}
if (y >= height) {
break;
}
}
int totalWidth = 0;
for(int i = 0; i < columnWidths.length; i++) {
totalWidth += columnWidths[i];
}
setExtent(totalWidth, Math.min(y, height));
}

}

在另一个类中,我使用这个自定义 GridField 管理器类。
int[] width = { (int) (Display.getWidth() / 2.9),
(int) (Display.getWidth() / 1.1) };

final CustomGridFieldManager gfm_transactioninfo = new CustomGridFieldManager(
width, 35, Manager.VERTICAL_SCROLL | Manager.FIELD_HCENTER
| FOCUSABLE) {
protected void paint(Graphics graphics) {
// TODO Auto-generated method stub
graphics.setColor(AppData.color_black);
super.paint(graphics);
}

};
gfm_transactioninfo.setMargin(10, 0, 0, 10);// set top and left margin

我像这样添加 Labelfiled,
lbl_CustEmail = new LabelField("Customer Email", LabelField.FOCUSABLE);
lbl_CustEmail.setFont(label_font);

value_CustEmail = new LabelField(": " +trandtail[0].getFromEmail());
value_CustEmail.setFont(label_font);

gfm_transactioninfo.add(lbl_CustEmail);
gfm_transactioninfo.add(value_CustEmail);

如果有人对如何水平滚动有任何想法,请帮助我。提前致谢。

最佳答案

通过自定义您的网格 View ,您可以在标签字段前后添加一个 FocusableNullField。通过这样做,一旦焦点位于第一个空字段上,您就可以水平滚动到下一个可聚焦空字段并显式使 labelfield 可滚动。

关于blackberry - 如何在黑莓的 labelField 中水平滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22730483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com