2

まず、これは重複した質問ではありません。私の能力の限り、すべての (多くの) 類似の質問を試しました。このような問題の解決策は、特定のシナリオに固有の非常に主観的なものに見えます。

私のレイアウトは現在次のように表示されます。黒い四角は画像 (それぞれlogobody ) で、色は各レイアウトを表します:

レイアウトのスクリーンショット

私のXML:

<?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:background="#000"
    android:padding="0px"
    android:layout_margin="0px"
    android:orientation="vertical">

    <LinearLayout
        android:layout_weight="16"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FFF"
        android:gravity="top|center"
        android:orientation="horizontal">
        <ImageView
            android:id="@+id/logo"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/logo"
            android:layout_gravity="top|center" />
    </LinearLayout>

    <LinearLayout
        android:layout_weight="4"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#00F"
        android:gravity="bottom|left"
        android:orientation="vertical">
        <ImageView
            android:id="@+id/body"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/body"
            android:layout_gravity="bottom|left" />
    </LinearLayout>

</LinearLayout>

ここでは、親線形レイアウトがあり、2 つの子線形レイアウトに分割されていることがわかります。これは、ページのその部分内で画像を別の場所に配置する必要があるためです。

一言で言えば、ロゴを上に垂直に配置し、本文を左下に水平に配置する必要があります。

今、私が試したいくつかのこと:

  • RelativeLayoutリニアではなく使用
  • LinearLayout と ImageView の両方の切り替えと、それぞれを除外するgravity組み合わせlayout_gravity
  • 幅と高さにはかなり自信match_parentがありますが、さまざまな組み合わせを試しましたwrap_content

私が理解するようになったこと:

  • gravity:top親ビューの使用が必要ですorientation:horizontal
  • gravity:left親ビューの使用が必要ですorientation:vertical
  • gravityビューの子に適用されます
  • linear_gravity子がその親とどのように整列するかを適用します
  • gravity親と子に同じ値を使用するとlinear_gravity、同じ効果が得られる可能性があります(一方を使用する場合)?

うまくいけば、これで十分な情報です。これらのレイアウトがどのように機能するかを理解するのに非常に苦労しています。

助けてくれてありがとう!

4

1 に答える 1

2

問題は、画像ビューのサイズをに設定していることだと思いますmatch_parent。あなたの場合(疑似XMLコード)で最も効率的であると思われるので、RelativeLayoutを使用します。

RelativeLayout (width=match_parent, height=match_parent)
  ImageView (width=wrap_content, height=wrap_content, 
             alignParentTop=true, centerHorizontal=true)
  ImageView (width=wrap_content, height=wrap_content, 
             alignParentBottom=true, alignParentLeft=true)

ここでは重力設定は必要ありません。画像サイズによっては、scaleType属性を試してみることをお勧めします。

于 2012-11-08T22:51:51.690 に答える