2011-05-11 3 views
20

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

<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> 

私はそれを得ていません。

+0

を使用しないでください?どこにもない?おそらくそれがどのように見えるの写真を投稿し、なぜそれを伝えるのが簡単だろう。私のレイアウトでは、layout_aboveのような属性でも "@ + id/rev_main"のようなIDを使用します。正直言っても、両者の違いは分かりませんが、おそらくそれを試してみてください。 – FoamyGuy

+0

消えます。 ImageViewを最初に宣言し、ImageViewの上にLinearLayout位置を作成しようとすると、LinearLayoutも消えます。 – Andrew

+1

これはバグですね。 – Price

答えて

22

これが起こります。私が見つけた解決策は、他の方向に進むことでした。

ImageViewにLinearLayoutの上になるように指示するのではなく、ImageViewの下にあるようにLinearLayoutに指示します。

<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> 
+1

これは私の問題です:ImageViewの変更に使用されるdrawable。つまり、コードに変数が必要です。 LinearLayoutの位置(上または下)も変化します。 LinearLayoutのLayoutParamsを編集する必要がある場合は、LinearLayoutの変数も必要です。私は、ImageViewの変数が必要であることを期待していました。 – Andrew

+1

まあ、変数は安いです。または、上の&1の下に2つの画像ビューを作成し、初期状態をandroid:visibility = "gone"に設定することもできます。次に、必要に応じて各ビューの可視性状態をプログラム的に変更することができます。 –

+0

xmlのLinearLayoutの上にrev_arrow ImageViewを移動する必要はありませんか?そうしないと、ファイルがリニアに解析されるため、参照エラーが発生します。私はその問題に遭遇しました。 :-P – stuckj

7

次はあなたのために働く必要があります:あなたは別のレイアウトに整列相対を指定するとき

<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> 
+2

私はこれに問題があります。時にはImageViewの上にLinearLayoutが必要な場合もあります。 LinearLayoutのアトリビュートをlayout_aboveに変更すると、LinearLayoutは完全に消えます。 – Andrew

1

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

私はそれはあなたのアプリケーションに適応しているかどうかを知るドントが、私の場合、それは完璧に動作します。より多くのコードが必要な場合は、私に教えてください。

0

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

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

それはどこにも表示されています

mLayoutInflater.inflate(R.layout.listitem, null); 
関連する問題