我正在尝试在HorizontalPanel内部获取两个按钮以显示在图像上方。不是在上面,你看到按钮,然后进一步向下看页面,看到图像,但你看图像,它上面有按钮。
这是我目前在Page.ui.xml文件中的代码:
<g:FocusPanel ui:field="profileImagePanel" addStyleNames="{style.headerImage}">
<g:AbsolutePanel addStyleNames="{style.innerImagePanel}">
<g:Image ui:field="profileImage" addStyleNames="{style.profileImage}"/>
<g:HorizontalPanel ui:field="imageEditButtons" addStyleNames="{style.imageEditButtons}">
<w:MultiUseButton ui:field="clearImage" addStyleNames="{style.change}" type="secondary" text="{i18n.clearImage}" visible="false"/>
<w:MultiUseButton ui:field="changeImage" type="secondary" text="{i18n.changeImage}" visible="false"/>
</g:HorizontalPanel>
</g:AbsolutePanel>
</g:FocusPanel>
样式是:
.headerImage {
position: absolute;
top: 0;
left: 0;
width: 150px;
}
.profileImage {
width: 150px;
position: relative;
}
.change {
float: right;
}
.headerImage a {
display: block;
}
.imageEditButtons {
width:100%;
}
.innerImagePanel {
width:150px;
}
我尝试使用FlowPanel而不是AbsolutePanel,但这不起作用。我已经尝试制作profileImage position:relative
和imageEditButtons position:absolute
,但这会搞砸页面其余部分的整个显示。我也试过设置imageEditButtons margin-top:-20px
,但是它位于图像下方而不是顶部。如果我将HorizontalPanel放在图像之前的AbsolutePanel中,则按钮位于图像上方,如果我尝试更改上边距,则会将按钮和图像向下移动。
我的想法已经不多了。任何有关如何完成这项工作的建议都将不胜感激。
答案 0 :(得分:1)
使用小部件图像来应用样式background-image
。以下是我对UiBinder文件内容的想象:
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:style>
/* requirement style */
.myPanel {
width: 200px; /* width of your background image */
height: 400px; /* height of your background image */
background-image: url(images/myimage.jpg); /* your image */
background-repeat: no-repeat;
}
/* optional style */
.myButton {
margin: 10px;
width: 80px;
height: 40px;
}
</ui:style>
<g:HTMLPanel>
<g:FocusPanel ui:field="profileImagePanel">
<g:AbsolutePanel addStyleNames="{style.myPanel}">
<g:HorizontalPanel ui:field="imageEditButtons">
<g:Button ui:field="clearImage" text="clear image" addStyleNames="{style.myButton}" />
<g:Button ui:field="changeImage" text="second button" addStyleNames="{style.myButton}" />
</g:HorizontalPanel>
</g:AbsolutePanel>
</g:FocusPanel>
</g:HTMLPanel>
用g:Button
替换我的代码w:MultiUseButton
并添加所需的其他样式。您可以在css文件中引入的样式。结果,你应该得到你想要的。在这种情况下,不需要AbsolutePanel。简单的FlowPanel也很合适。