2012-05-03 7 views
17

Androidのレイアウトに関する質問です。ここで私は熱心を取得したいものです。ビューを親レイアウトの外に少し出す方法はありますか?

Layout

ダーク・グレーのLinearLayoutです。オレンジはレイアウトXで、次にGreenはFrameLayoutです。 Greenを親のレイアウトXの外側に配置する必要があります。記述されたレイアウト階層は変更できません。唯一の選択肢はレイアウトXです。それはあなたの望むものでもかまいません。

アイデア?

+0

私が考えることができる唯一の方法は、FrameLayoutを使ってすべてをラップし、濃いグレーとオレンジを線形レイアウトにしてから、緑色のレイアウトを他のレイヤーに重ね​​ることです。あなたの「レイアウト階層は変更できません」との間で競合します。ただ好奇心から、なぜそれはできないのですか? – Barak

+0

余白に負の値を指定できると思います。あなたはそれを試しましたか?私はそれがオーバーラップすることができるレイアウト(例えば、キャンバス上の2つのオブジェクト)で動作すると思います。私はエディタの近くにいません、そうでなければ私はそれを自分で試してみましょう。あなたがレイアウト全体をキャンバスにするとオーバーラップする可能性があることは確かですが、私はあなたの状況ではわかりません。 – Gophermofur

+0

@Barak:それは基本的にテーブル(テーブル行は写真上にあります)であり、ある状況ではそれを通常の位置に移動する必要があるため、Table/TableRowレイアウトだけが使用できます。 – agibalov

答えて

4

緑の部分をレイアウトXに配置することはできません。レイアウトのX部分をその親の外側に描画することはできないためです。

したがって、すべてのビューの親としてRelativeLayoutまたはFrameLayout(ルートレイアウト)を実装する必要があります。

緑色のビューをルートレイアウトのchildViewとして配置します。

<?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> 
+0

私は、私が使っているものの代わりに、より適切なレイアウトを使ってそれを達成する方法があることを知っています。私の場合はそれを行う方法があるなら、私はまだ興味があります。 – agibalov

29

使用 - あなたの子ビューのすべての親で

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

、あなたが親ビューと意志の外で、あなたの子ビューを置くであろう、負であるためにあなたのビューの「マージンを残した」置きますビューをクリップすることさえできません。

+1

負のマージンが勝者です! – hellaandrew

+2

Spot on! Cheers – AhmedW

+3

私のために働いていないようです – Denny

関連する問題