我目前正在使用Codename One編寫一個簡單的遊戲,我希望用戶選擇國家。Codename One BoxLayout scroll
我希望這些國家在滾動列表中表現爲圖像。
我在X軸上有一個帶BoxLayout的容器,並且裏面有圖標的按鈕。
問題是,不適合容器的列表項正在裁剪,並且在應該出現時未繪製。此外,當手指位於未拉伸物品上方時,容器不可滾動。
And here how it looks like after scroll
這裏是源:
final Container cont_nations = new Container(new BoxLayout(BoxLayout.X_AXIS));
int buttons_width = dim_nation_man.getWidth() * 5;
cont_nations.setPreferredW(buttons_width + 50);
cont_nations.setPreferredH(dim_nation_man.getHeight());
cont_nations.setX(Main.screenWidthHalf - buttons_width/2);
cont_nations.setY(choiseImage.getY() + dim_choise.getHeight() + Main.cellSize * 0);
cont_nations.setScrollSize(new Dimension(man_size * imgName_nations.length, man_size));
cont_nations.setScrollable(true);
//cont_nations.setScrollVisible(false);
addComponent(cont_nations);
for (int i = 0; i < img_nations.length; i++) {
final Button btn_nation = new Button(img_nations[i][0].image);
cont_nations.addComponent(btn_nation);
}
我知道我做錯了。 也許我不應該使用容器,或者我應該用另一種方式用孩子填充它,或者爲孩子使用另一個班級。 但我找不到任何信息出了什麼問題。
編輯
我試過夏嘉曦阿爾莫格的建議,使用setScrollableX()而已,但我需要一個沒有工作。 容器移動到左上角並且不可滾動。
起初,我需要這個卷軸位於特定的位置並具有特定的大小,所以我使用CoordinateLayout作爲Container的父級。 這就是爲什麼我用setPreferredH()使用setX(),setY()和setPreferredW()。
我無法檢查它,所以我現在稍後會做,但我記得,沒有工作。 容器沒有滾動,因爲它的大小取決於它的孩子。 – geNia
圖像應占用空間,滾動只會在需要時觸發。這是它應該如此工作的方式,從此開始並繼續。 –
我試過了你的建議,但沒有奏效。看到我的編輯問題。 – geNia