1

非常に悪いタイトルで申し訳ありませんが、この質問を何と呼ぶべきか他にわかりません。私がやろうとしているのはこれです: RelativeLayout2人の子供を持つ a を持っています:

  1. と一つlayout_centerInParent="true"
  2. と一つlayout_alignParentBottom="true"

ただし、デバイスが横向きモードの場合、要素 (1) は要素 (2) のまたはにわずかに表示されます。ただし、要素 (1) には、要素 (2)の上に表示される十分なスペースがあります。画面が小さすぎて要素(1)を中央に配置できず、両方の要素が重ならないようにレイアウトを作成するにはどうすればよいですか?要素(1)を(のように)要素(2)の上に揃えますか?layout_above

4

3 に答える 3

2

text1これにより、アイテムが上の利用可能なスペースを埋め、text2そのスペースの垂直方向および水平方向の中央に配置されるレイアウトが得られます。下部にtext2あり、水平方向の中央にあります。

<LinearLayout 
    android:orientation="vertical"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent">

    <TextView
        android:id="@android:id/text1" 
        android:layout_width="fill_parent" 
        android:layout_height="0dp" 
        android:layout_weight="1" 
        android:text="Centered" 
        android:gravity="center_vertical|center_horizontal"
        />

    <TextView
        android:id="@android:id/text2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Bottom"
        android:gravity="center_horizontal"
        />
</LinearLayout>

重要な部分はandroid:layout_weight、 と組み合わされていandroid:gravityます。

于 2010-04-14T22:27:40.487 に答える
1

要素 (1) があまりリソー​​スを消費しない場合に有効な左翼の提案があります。

要素 (1) の 2 つのバージョンを用意します。1 つ目は を使用layout_centerInParent="true"し、2 つ目は を使用しlayout_above="@id\element2"ます。両方をデフォルトにしandroid:visibility="invisible"ます。onCreate Post で、両方の要素の Y 寸法を検査View.VISIBLEし、最小値を持つ要素を設定する Runnable を投稿します。

于 2010-04-14T12:25:42.323 に答える
1

新しい考え:

これは、あまり洗練されていないという点で回避策のような別のアイデアですが、非常に単純です。次のように構成された独自の < 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デフォルトでどちらを使用するかがわかります。

于 2010-04-14T12:49:50.050 に答える