Codename One的新手,从Android" native" java开发。
我尝试创建一个松散类似于Material侧面菜单的SideMenu设计,就像几乎所有Google应用程序(例如Play商店)中所见。从标题图片开始,我似乎无法摆脱顶部和底部的一些填充:
顶部和底部的白条是不需要的。目前的代码:
public void start() {
if (current != null) {
current.show();
return;
}
home = new Home();
// SideMenu header BG image
Image headerImage = theme.getImage("bg_navdrawer_header.png");
ScaleImageLabel sideMenuHeaderBg = new ScaleImageLabel(headerImage);
sideMenuHeaderBg.setBackgroundType(Style.BACKGROUND_IMAGE_SCALED_FIT);
// SideMenu header app title
Label sideMenuHeaderLabel = new Label("Title");
sideMenuHeaderLabel.setUIID("SideMenuHeaderTitle");
Container sideMenuHeader = new Container();
sideMenuHeader.add(LayeredLayout.encloseIn(sideMenuHeaderBg, FlowLayout.encloseBottom(sideMenuHeaderLabel)));
home.getToolbar().addComponentToSideMenu(sideMenuHeader);
home.show();
}
如果我使用BACKGROUND_IMAGE_SCALED_FILL,白条会消失,但它不会保持纵横比 - 它会拉伸以填充这两个空格。 (编辑:它 保持宽高比,但它会剪切更长的尺寸)。我已经尝试将UIID设置为" Container"一切都没有区别。
有什么想法吗?
更新
出于某种原因,在设置背景类型后立即调用ScaledImageView上的setWidth解决了它。宽度是什么,任何数字和" letterboxing"都不重要。已经消失,高度应该是应该的。
ScaleImageLabel sideMenuHeaderBg = new ScaleImageLabel(headerImage);
sideMenuHeaderBg.setBackgroundType(Style.BACKGROUND_IMAGE_SCALED_FILL);
sideMenuHeaderBg.setWidth(0);
如果某人有更好的解决方案,或者至少可以解释为什么会出现这种情况,或者至少可以解释为什么会发生这种情况,那么我会解决这个问题,因为我的解决方案更像是一个黑客而不是一个真正的答案。
答案 0 :(得分:1)
BACKGROUND_IMAGE_SCALED_FILL
应该保持宽高比。它调整图像大小以“填充”空间的较短尺寸。剪裁较长的尺寸。
BACKGROUND_IMAGE_SCALED
将伸展以填充空间,但不会保持宽高比。
BACKGROUND_IMAGE_SCALED_FIT
也会保持宽高比。它调整图像大小以“填充”空间的较长尺寸。较短的尺寸是“letterboxed”,如截图所示。