我需要保持一个具有背景颜色的组件顶部的图像,以便一半的组件被图像覆盖。因此,我使用了layerlayout,但它不起作用。请看下面的代码和图片。
代码:
super(new BoxLayout(BoxLayout.Y_AXIS));
Container servicestatContainer = BoxLayout.encloseY();
servicestatContainer.getAllStyles().setBgColor(0x01579b);
servicestatContainer.getAllStyles().setBgTransparency(255);
servicestatContainer.getAllStyles().setPadding(5, 5, 5, 5);
servicestatContainer.getAllStyles().setMarginTop(0);
servicestatContainer.getAllStyles().setMarginBottom(0);
Label imageLabel = new Label(res.getImage("home_car.png").scaledWidth(Display.getInstance().getDisplayWidth()-50),"Button");
add(LayeredLayout.encloseIn(
servicestatContainer,
BorderLayout.south(FlowLayout.encloseCenterBottom(imageLabel))
));
//this doesn't work
servicestatContainer.setHeight(imageLabel.getPreferredH()/2);
System.out.println("carHeight " + imageLabel.getPreferredH()/2);
我想要做的是:
从上面的代码中看起来是什么
发布于 2018-10-26 06:17:59
这是我能做的壁橱:
super(new BoxLayout(BoxLayout.Y_AXIS));
Label imageLabel = new Label(res.getImage("home_car.png").scaledWidth(Display.getInstance().getDisplayWidth()-50),"Button");
Image background = Image.createImage(Display.getInstance().getDisplayWidth(), imageLabel.getPreferredH(), 0xff01579b);
Container servicestatContainer = BoxLayout.encloseY();
servicestatContainer.getAllStyles().setPadding(5, 5, 5, 5);
servicestatContainer.getAllStyles().setMarginTop(0);
servicestatContainer.getAllStyles().setMarginBottom(0);
servicestatContainer.add(new Label(background));
LayeredLayout ll = new LayeredLayout();
Container contLayered = new Container(ll);
contLayered.addAll(servicestatContainer, imageLabel);
ll.setInsetTop(imageLabel, imageLabel.getPreferredH() / 2 + "px");
ll.setReferenceComponentTop(imageLabel, servicestatContainer);
add(contLayered);
关键是使用LayeredLayout insets。希望它是有用的。
发布于 2018-10-26 11:01:44
这应该是可行的:
Container servicestatContainer = BoxLayout.encloseY();
Style s = servicestatContainer.getAllStyles();
s.setBgColor(0x01579b);
s.setBgTransparency(255);
s.setPadding(5, 5, 5, 5);
s.setMarginUnit(Style.UNIT_TYPE_DIP);
s.setMarginTop(0);
s.setMarginBottom(12);
这假设父对象的背景是白色的。
之前这对你不起作用的原因是,你把蓝色容器放在图片下面,由于分层布局,它们都有相同的大小。
https://stackoverflow.com/questions/52984044
复制相似问题