web-dev-qa-db-ja.com

RelativeLayoutでのlayout_aboveの使用

ImageViewがLinearLayoutの上に表示されない理由を誰かに説明できますか?

<RelativeLayout
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content">
    <LinearLayout
        Android:id="@+id/rev_main"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content">
        <!-- some stuff in here -->
    </LinearLayout>
    <ImageView
        Android:id="@+id/rev_arrow"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:src="@drawable/arrow"
        Android:layout_above="@id/rev_main"
        />
</RelativeLayout>

わかりません。

20
Andrew

これは、別のレイアウトを基準に配置を指定した場合に発生します。私が見つけた解決策は、他の方向に行くことでした。

ImageViewにLinearLayoutの上にあるように指示する代わりに、LinearLayoutにImageViewの下にあるように指示します。

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content">
    <LinearLayout
        Android:id="@+id/rev_main"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_below="@+id/rev_arrow">
        <!-- some stuff in here -->
    </LinearLayout>
    <ImageView
        Android:id="@+id/rev_arrow"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:src="@drawable/arrow"
        />
</RelativeLayout>
25
Error 454

以下はあなたのために働くはずです:

<RelativeLayout
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content">
    <ImageView
        Android:id="@+id/rev_arrow"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:src="@drawable/arrow"
        Android:layout_alignParentTop="true"
        />
    <LinearLayout
        Android:id="@+id/rev_main"
        Android:layout_width="fill_parent"
        Android:layout_below="@id/rev_arrow"
        Android:layout_height="wrap_content">
        <!-- some stuff in here -->
    </LinearLayout>
</RelativeLayout>
7
Joseph Earl

カスタムオプションメニューを作成することで、同様の問題が発生しました。ビューのzオーダーを設定する最も簡単な方法は、プログラムで行うことです。順序を時々切り替える場合は、次のように簡単に呼び出す必要があります。

    ImageView yourImageView = (ImageView)findViewById(R.id.rev_arrow);
    yourImageView.bringToFront();

アプリケーションに適応するかどうかはわかりませんが、私の場合は完璧に機能します。さらにコードが必要な場合はお知らせください。

1
Opiatefuchs

ListViewにこのような問題がある場合は、適切なインフレ方法を使用してください。正しいインフレーションを行うには、親ビューグループを指定する必要があります。

mLayoutInflater.inflate(R.layout.listitem, parent, false);

使用しない

mLayoutInflater.inflate(R.layout.listitem, null);
0
Aleksey Masny