RelativeLayout
ビューをレイアウトの側面 (任意の側面) に揃えて、同じ方向に大きなマージンを設定すると、奇妙な動作に気付きました。
RelativeLayouts
それぞれに単純なビューが含まれている2つがあります。1 つのレイアウトではビューが上下左右に配置され、もう 1 つのレイアウトでは上下左右に配置されます。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="110dp"
android:layout_gravity="center"
android:background="#ff555555" >
<View
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:background="#aa8711" />
</RelativeLayout>
<RelativeLayout
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginBottom="110dp"
android:layout_gravity="center"
android:background="#ff555555" >
<View
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="#998877" />
</RelativeLayout>
</FrameLayout>
次のようになります。
親の配置の各方向に 130 dp の余白を追加しました。つまり、ビューはレイアウトで部分的にのみ表示される必要があります。これが起こることです:
ご覧のとおり、ビューがレイアウトの「壁」に押し付けられるため、ビューが元のサイズよりも小さくなっています。次に、レイアウトよりも大きな余白を与えようとしたので、整列方向に 151 dp の余白を与えました。次のように見えました。
右下に配置されたビューがレイアウトから「分割」され、元のサイズと同じになります。一方、左上に配置されたビューは元のサイズのままですが、レイアウトの外側ではなく、レイアウトの内側に完全に収まっています。
私はこれを個別に、および配置のすべての順列で試しましたが、同じ結果が得られました。
質問 1:この一貫性のない動作を説明できる人はいますか?
同じことを試してみましたが、今回は動作を の動作と比較しFrameLayout
ます。初期設定:
および余白の後:
FrameLayout
はビューを常に元のサイズに保ち、単にビューを「終了」させます。少なくとも の外側にある必要があるビューのサイズの反対方向に負のマージンを与えようとしましたが、デフォルトRelativeLayout
で で発生するのと同じ動作が見られました。FrameLayout
質問 2:動作の違いと、逆のマイナスのマージン効果を説明できる人はいますか?