2011-12-30 38 views
4

2つのボタンが表示されないように、ScrollViewが画面の下部に余分なスペースを取らないようにしようとしています。また、ScrollViewの高さを手動で設定する必要もありません。ScrollViewの高さが高くなりすぎないようにする

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 
    <LinearLayout 
     ... 
     android:orientation="horizontal"> 
     <Button .../> 
     <TextView .../> 
     <Button .../> 
    </LinearLayout> 
    <ScrollView 
     android:layout_width="math_parent" 
     android:layout_height="wrap_content"> 
     <ImageView .../> 
     <ImageView .../> 
     <ImageView .../> 
    </ScrollView> 
    <LinearLayout 
     ... 
     android:orientation="horizontal"> 
     <Button .../> 
     <Button .../> 
    </LinearLayout> 
</LinearLayout> 

これは私のレイアウトの一般化されたバージョンです。何が起こっているのかは、ScrollViewが何個のアイテムを持っていても画面の一番下までスクロールビューが伸びていることです。これにより、画面の下部にある2つのボタンが表示されなくなります。

ScrollViewの高さを手動で設定しなくても、これをどうやって止めることができますか?

私はすべての私の意見にandroid:layout_height="wrap_content"を使用しました。

これは、画面の高さに合わせてビューの高さを自動的に分配するものではありませんか?

((画像を含むたかったが、私の担当者がまだ十分に高くない -_ - ))

+1

をあなたのルートレイアウトとしてRelativeLayoutに切り替えるには良い考えかもしれません。それはあなた自身の高さを明示的に計算することなく、ScrollViewをビューの中央領域内に維持するためのツールを提供するはずです。 – harism

+0

コメントありがとうございます。以来、私は別のソリューションを実装しましたが、途中でさらにいくつかのことを学びました。あなたの実装が、私がしたいことに最も適していると思います。 RelativeLayoutを使用すると、ボタンを画面の下に固定し、他のすべてのUIオブジェクトを画面の上端とボタンの間に配置できます。 – edc598

+0

ScrollViewには子が1つしかありません。しかし、これがあなたの問題の原因であるかどうかは考えられません。 – Wytze

答えて

2

方法Iを今日この問題を解決するにはRelativeLayoutを基礎とする。 2つをそれぞれRelLayoutの上と下に固定してください。それから私はScrollViewを挿入しますが、私は次のようにレイアウトプロパティです設定してくださいになります。

android:layout_below="topLinearLayout" android:layout_above="bottomLinearLayout"

+0

は "alignParentTop = true"でなければなりません(下側と同じです) – ataulm

+0

上部のLinearLayoutでは 'alignParentTop = true'を、下部のLinearLayoutでは' alignParentBottom = true'を使用しますが、ScrollViewでは上に示したとおりです。つまり、ScrollViewアンカーの上端を、上のLinearLayoutの下端に、下端を下のLinearLayoutの上端に合わせます。 – edc598

1

あなたはScrollViewためlayout_weightを使用しようとしています。 IIRCの場合、ONE要素にゼロ以外の重みが設定されている場合(対応する次元が0dpに設定されている場合)、兄弟ビューの測定値を設定した後、その次元の残りの領域が埋められます(この場合はLinearLayoutScrollViewの上部と下部に。

謝罪、チェックするためのAndroid環境を持って、それがしばらくされていない。

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <LinearLayout> 
     ... 
     Something at the top 
     ... 
    </LinearLayout> 

    <ScrollView 
     android:layout_width="match_parent" 
     **android:layout_height="0dp" 
     android:layout_weight="1"**> 
     <ImageView .../> 
     <ImageView .../> 
     <ImageView .../> 
    </ScrollView> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 
     ... 
     buttons 
     ... 
    </LinearLayout> 
</LinearLayout> 

Here's an answerをlayout_weight属性の詳細を。

関連する問題