【问题标题】:FrameLayout's margin bottom for child doesn't workFrameLayout 的儿童边距底部不起作用
【发布时间】:2013-03-11 12:41:22
【问题描述】:

我有以下视图层次结构:

<FrameLayout>
   <LinearLayout>
       <!-- Some Child views-->
   </LinearLayout>
   <ImageView>
   </ImageView>
</FrameLayout>

我尝试设置ImageView 的下边距,在布局编辑器上它似乎可以正常工作,但是当我运行代码时,我设置的下边距被丢弃了。

重要提示:我还将margin top 定义为ImageView,它确实有效。

我看到了其他问题,我已经尝试FrameLayout 子视图的gravity 设置为top,但这也不起作用。

我还看到 Android > 3.0(我在 4 上运行)解决了这个问题 - Link to the issue

【问题讨论】:

    标签: android android-layout android-view android-framelayout


    【解决方案1】:

    您始终可以将ImageView 包装成FrameLayout,并将ImageView 中所需的底部边距设置为包装器FrameLayout 的底部填充:

    <FrameLayout>
       <LinearLayout>
           <!-- Some Child views-->
       </LinearLayout>
       <FrameLayout // same attributes as the ImageView but with also android:paddingBottom="xxdp">
           <ImageView // no margin set here!>
           </ImageView>
       </FrameLayout>
    </FrameLayout>
    

    如果您说从 Honeycomb 开始此行为已修复,那么您可以使用 API 相关的布局文件夹、我的 Honeycomb 下方的布局以及您的任何其他 API 级别的布局。

    【讨论】:

    • 我的意思是,虽然我使用的是 Android 版本 > 3,但它仍然无法正常工作。我尝试了您的解决方案,但给定的布局是一个列表项,因此为每一行添加一个额外的布局管理器会显着影响性能。
    • @Daniel 如果你要将ImageView 的底部边距堆叠在LinearLayout 的顶部(我希望你不要给它顶部边距以适合两件)?
    • 因为我希望它只覆盖LinearLayout 上的某个部分,不,我没有为LinearLayout 设置上边距。
    • @Daniel 请发布您的布局文件以及您正在使用的属性。
    • 天哪!你的回答救了我的命!我被误导设置布局的重力,而您的解决方案是如此简单明了。谢谢。
    猜你喜欢
    • 2011-07-21
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2015-02-19
    • 2015-12-02
    相关资源
    最近更新 更多