web-dev-qa-db-ja.com

Android ScrollViewと画面下部のボタン

これを実装したい:多くの要素(ImageViews、TextViews、EditTextsなど)を含むScrollView、およびScrollViewの後に、常に画面の下部に常に表示されるいくつかのボタン(カスタムImageViews)。

Android:fillViewport = "true"属性を使用する場合、ScrollViewの要素が大きすぎて画面サイズに収まらない場合、ボタンは非表示になります。 Android:Weight = 1属性を使用する場合、画面が大きくて収まる場合、ScrollViewは画面の50%のみを取得します(ボタンの割合を10%程度に抑えたい)。 Android:Weightをより大きな値に設定すると、ボタンは非常に小さく表示されます。

助けてください!たぶんそれは私が見落としていた簡単なものかもしれませんが、何時間も頭を叩いています!

36
george

作成してテストしました。あなたが望むように見えます。

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
                Android:layout_width="match_parent"
                Android:layout_height="match_parent">

    <LinearLayout
            Android:id="@+id/buttons"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:orientation="horizontal"
            Android:gravity="center"
            Android:layout_alignParentBottom="true">
        <Button
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Custom Button1"/>
        <Button
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Custom Button2"/>
    </LinearLayout>

    <ScrollView
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:layout_above="@id/buttons">
         <!--Scrollable content here-->
        <LinearLayout
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:orientation="vertical">                
            <TextView
                    Android:layout_height="wrap_content"
                    Android:layout_width="wrap_content"
                    Android:text="test text"
                    Android:textSize="40dp"/>
        </LinearLayout>
    </ScrollView>

</RelativeLayout>
84
Aleksey Masny
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical">
    <ScrollView
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:layout_weight="1">
        <LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:orientation="vertical">
            <TextView 
             Android:layout_width="wrap_content"
             Android:layout_height="wrap_content"
             Android:text="Hello World"
            />
            <TextView 
             Android:layout_width="wrap_content"
             Android:layout_height="wrap_content"
             Android:text="Hallo Welt"
            />       
        </LinearLayout>
    </ScrollView>
    <RelativeLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_weight="0">
        <Button
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Go next page"
            Android:layout_alignParentRight="true" />
    </RelativeLayout>

</LinearLayout>
9
macio.Jun

これは私のために働いた。スクロールビューのウェイトを1にします。スクロールビューに続く他のすべてのウィジェットをレイアウトに配置します。スクロールビューは、残りをブロックしない程度に大きくなります。

スクロールビューのウィジェットと下部のウィジェット

3
HarisankarK

scrollviewは、線形レイアウトに配置するため画面に収まらないため、線形レイアウトは画面に収まります。

xmlレイアウトのルート要素としてscrollviewを作成してみてください

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/scrollView1"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content" >

    <LinearLayout
        Android:id="@+id/linearLayout1"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content" >
        <!-- Here you can put some XML stuff and BOOM! your screen fit to scrollview -->

    </LinearLayout>
</ScrollView>
2
kechvp

RelativeLayoutを使用したくない場合は、LinearLayoutを使用することをお勧めします。私の意見では、この方法の方が優れています。

layout_weightをoneに設定するだけです

enter image description here

0
gadolf