34

这是一个关于Android布局的问题。这是我急切想要得到的:

布局

深灰色是一种线性布局。橙色是布局 X,然后绿色是 FrameLayout。我需要将 Green 放在其父级 - 布局 X 之外。所描述的布局层次结构无法更改。唯一的选择是布局 X - 它可以是你想要的任何东西。

有任何想法吗?

4

3 回答 3

73

利用 -

android:clipChildren="false"
android:clipToPadding="false"

在您的子视图的每个父视图中,您将视图的“左边距”设置为负值,这会将您的子视图置于父视图之外,甚至不会剪切视图。

于 2015-07-13T13:01:48.347 回答
4

您不能将绿色部分放在布局 X 中,因为它不能在其父级之外绘制。

因此,您应该实现一个 RelativeLayout 或 FrameLayout(根布局)作为所有这些视图的父级。

并将绿色视图作为根布局的子视图。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_root"
    android:layout_width="fill_parent"
    android:layout_height="200dp"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/layout_dark_grey"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layout_orange"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_toRightOf="@id/layout_dark_grey"
        android:orientation="vertical" >
    </LinearLayout>

    <RelativeLayout
        android:id="@+id/layout_green"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="300dp" >
    </RelativeLayout>

</RelativeLayout>
于 2012-05-03T13:48:09.013 回答
1

只需添加android:clipChildren="false"到父布局。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:clipChildren="false">

    <LinearLayout
        android:layout_marginLeft="-25dp"
        android:background="@color/colorGray"
        android:layout_width="100dp"
        android:layout_height="100dp"/>
    <LinearLayout
        android:gravity="center|left"
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:background="@color/colorOrange">
        <LinearLayout
            android:layout_marginLeft="-25dp"
            android:background="@color/colorGreen"
            android:layout_width="50dp"
            android:layout_height="50dp"></LinearLayout>
    </LinearLayout>
</LinearLayout>
于 2019-03-29T09:05:17.200 回答