这是一个关于Android布局的问题。这是我急切想要得到的:
深灰色是一种线性布局。橙色是布局 X,然后绿色是 FrameLayout。我需要将 Green 放在其父级 - 布局 X 之外。所描述的布局层次结构无法更改。唯一的选择是布局 X - 它可以是你想要的任何东西。
有任何想法吗?
这是一个关于Android布局的问题。这是我急切想要得到的:
深灰色是一种线性布局。橙色是布局 X,然后绿色是 FrameLayout。我需要将 Green 放在其父级 - 布局 X 之外。所描述的布局层次结构无法更改。唯一的选择是布局 X - 它可以是你想要的任何东西。
有任何想法吗?
利用 -
android:clipChildren="false"
android:clipToPadding="false"
在您的子视图的每个父视图中,您将视图的“左边距”设置为负值,这会将您的子视图置于父视图之外,甚至不会剪切视图。
您不能将绿色部分放在布局 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>
只需添加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>