我對黑莓手機非常陌生,試圖製作一個自定義管理器。所以我試圖讓佈局非常簡單,它會顯示兩個Labelfields(我可以非常容易地將它們都放到HorizontalFieldManager中,但我需要使用自定義管理器來完成此操作。)設置自定義管理器中的字段寬度
Out out should是這樣的: - Hello(FirstField) User(SecondField)
這裏是我的課堂我sublayout方法,擴展到經理
public MyManager() {
// construct a manager with vertical scrolling
super(Manager.VERTICAL_SCROLL);
}
protected void sublayout(int width, int height) {
Field field;
// get total number of fields within this manager
int numberOfFields = getFieldCount();
int x = 0;
int y = 0;
for (int i = 0; i < numberOfFields; i++) {
field = getField(i); // get the field
setPositionChild(field, x, y); // set the position for the field
layoutChild(field, width, height); // lay out the field
x = x + field.getHeight();
}
setExtent(width, height);
}
如果我刪除此行x = x+field.getWidth();
然後兩種文本(你好用戶)將被重疊 (我認爲這是因爲x,y = 0)現在我希望我會得到field.getWidth()
將返回字段一使用的寬度,但它給我的顯示寬度(這是我的想法),所以我只能在佈局中看到Hello。
對於垂直定位項目,它可以正常使用y = y+field,getHeight();
,但不知道爲什麼getWidth
沒有返回我適當的寬度值,可能是因爲我誤導某處以理解此問題。
我需要重寫getPrefferedWidth()
方法?我也嘗試過這種方法,並保持原樣,但是在兩個字段和其他文本之間留下少量空格(2-3)。
我認爲y將在setPositionChild方法中是maxHeight。我試過了,但是它在整個屏幕上仍然只顯示出一個元素。 –
@ R.j。你只在這裏發佈了一部分代碼。字段的定義丟失 - 發佈。您描述的行爲可能是由使用所有可用寬度的字段造成的。在任何情況下,正如我在答覆中所說的那樣 - 您應該首先佈置這些字段,而不僅僅是定位它們(否則,您將在它們的寬度和高度尚未確定之前嘗試對它們進行定位)。 – mrvincenzo
嗨,我只在我的自定義管理器類中重寫此方法,並有一個構造函數,我編輯了我的代碼。 –