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>
わかりません。
これは、別のレイアウトを基準に配置を指定した場合に発生します。私が見つけた解決策は、他の方向に行くことでした。
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>
以下はあなたのために働くはずです:
<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>
カスタムオプションメニューを作成することで、同様の問題が発生しました。ビューのzオーダーを設定する最も簡単な方法は、プログラムで行うことです。順序を時々切り替える場合は、次のように簡単に呼び出す必要があります。
ImageView yourImageView = (ImageView)findViewById(R.id.rev_arrow);
yourImageView.bringToFront();
アプリケーションに適応するかどうかはわかりませんが、私の場合は完璧に機能します。さらにコードが必要な場合はお知らせください。
ListViewにこのような問題がある場合は、適切なインフレ方法を使用してください。正しいインフレーションを行うには、親ビューグループを指定する必要があります。
mLayoutInflater.inflate(R.layout.listitem, parent, false);
使用しない
mLayoutInflater.inflate(R.layout.listitem, null);