新しい考え:
これは、あまり洗練されていないという点で回避策のような別のアイデアですが、非常に単純です。次のように構成された独自の < LinearLayout > に要素 (1) を配置します。
<LinearLayout android:layout_width="fill_parent"
android:layout_height="fill_parent" // More on this line below
android:layout_alignParentTop="true"
android:layout_above="@id/element2"
android:gravity="center">
その線形レイアウトは常に画面の上部から要素 (2) のすぐ上まで広がり、その重心は「中心」であるため、要素 (1) は常に利用可能なスペースの真ん中にあります。注: この行android:layout_height="..."
は必須ですが、実際には何もしていないようです。fill_parent か wrap_content かに関係なく、その高さは、その上部を ParentTop に固定し、下部を element(2) に固定する線によってオーバーライドされます。ただし、行がないと、ランタイム例外でクラッシュします。
オリジナルで、あまり良いアイデアではありません:
理想的とは言えないもう 1 つの解決策は、2 つのレイアウト ファイルを使用することです。縦向きのレイアウト xml をレイアウト フォルダーに配置し、横向きのレイアウトを layout-land という新しいフォルダーに配置します。Android は、スマートフォンの向きに基づいて、適切なものを自動的に選択します。を使用できると思いますがlayout-port
、縦向きのものを入れると、layout
デフォルトでどちらを使用するかがわかります。