2012-04-21 5 views
2

リストビューと1つのImageViewが下部にあり、上部に1つの垂直なLinearLayoutがあり、リストビューは残っているスペースを埋める。androidを作る方法:layout_gravity = "bottom | center_horizo​​ntal"は底にとどまる

それは次のようになります。私は目に見えるリストビューを持っている時はいつでも

<LinearLayout layout_height="match_parent" layout_width="@dimen/width" 
    orientation="vertical"> 
    <ImageView layout_height="@dimen/width" layout_width="@dimen/width" id="@+id/top"> 

    <ListView android:layout_height="0px" 
     android:background="#00ffff" 
     android:layout_width="@dimen/width" 
     android:layout_weight="1" /> 

    <ImageView layout_height="@dimen/width" layout_width="@dimen/width" id="@+id/bottom" layout_gravity="bottom|center_horizontal"> 

それは正常に動作します。

私はリストビューを可視に設定するたびに、 '下部' ImageViewがポップアップして上部画像ビューのすぐ下に表示されます。

私の質問は、 'android:layout_gravity = "bottom | center_horizo​​ntal"'と言っていたにもかかわらず、一番下にImageViewが残らない理由です。したがって、下の画像ビューはandroid:layout_gravity = "bottom | center_horizo​​ntal"を尊重し、一番下にいなければなりません。

+0

あなたは 'ListView'は' gone'であることを要求してください、またはあなたがinvisble' 'に設定すると逃げることができます?私はかなり後者があなたが探しているものを与えるだろうと確信しています。 –

答えて

3

私のコメントの代わりに、あなたはLinearLayoutRelativeLayoutに置き換えることができます。 Agarwalはすでにこれを示唆していましたが、コードはちょっと混乱していて、この文章の時点では、あなたがしたいことに関しては正しくありません。

以下のコードを試してみてください。 ListViewgoneに設定すると、上部および下部の画像は、visibleと同じ位置にとどまります。あなたがそれらを元に戻すしたい場合がありますので、私は、@dimens/width参照を置き換えることに注意してください。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent"> 

    <ImageView android:id="@+id/top" android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

    <ListView android:layout_width="fill_parent" 
     android:layout_height="fill_parent" android:layout_above="@+id/bottom" 
     android:layout_below="@+id/top" android:background="#00ffff" /> 

    <ImageView android:id="@+id/bottom" android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" /> 

</RelativeLayout> 
+0

ありがとうございます。 ListViewを上からではなく下から '成長'させることは可能ですか?最初の要素がListViewの一番下に表示され、次に2番目の要素が最初の要素の上にあり、息子などの要素がありますか? – michael

+0

@michael:もし私が間違っていなければ、この目的のために 'stackFromBottom'フラグを使うことができます。 xml:['android:stackFromBottom'](http://developer.android.com/reference/android/widget/AbsListView.html#attr_android:stackFromBottom)、またはコード:[' setStackFromBottom(boolean) '] (http://developer.android.com/reference/android/widget/AbsListView.html#setStackFromBottom%28boolean%29)。 * "bottomからスタックがtrueに設定されている場合、リストはビューの下から開始してコンテンツを埋めます。" * –

0

最善の解決策は、このためにralaticelayout使用することです::::

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#0000FF"> 

<ImageView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/top" /> 
<ImageView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/bottom" android:layout_alignParentBottom="true"/> 
    <ListView android:layout_height="fill_parent" 
     android:background="#00ffff" 
     android:layout_width="fill_parent" 
     android:layout_below:@id/top android:layout_above:@id/bottom /> 


</RelativeLayout> 
+1

申し訳ありませんが、あなたの提案は全く意味がありません。 'orientation'属性を持つ' RelativeLayout'ですか?そして、体重のある子供の眺め?これは、実際には常に '0 'の高さで' ListView'をレンダリングします。言い換えれば、全く表示されません。最後に、 'ListView'と下の' ImageView'がオーバーレイされます。これはおそらくOPが何の後であるかではないでしょう... –

+0

オリエンテーションが削除され、relativelayoutの必要はありません。 0dpはそれが残りのスペースを占めることを示します。 –

+0

あなたの提案を実際に試しましたか?私が知っている限り、重みは「RelativeLayout」では無視されます。つまり、単に固定された高さのゼロを持つことを意味します。 –

関連する問題