web-dev-qa-db-ja.com

AndroidでScrollViewを使用する方法?

私はXMLレイアウトファイルを持っていますが、テキストはスクリーンサイズに収まる以上のものです。 ScrollViewを作るために何をする必要がありますか?

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

<TableLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:stretchColumns="1" >

    <TableRow>
        <ImageView
            Android:id="@+id/imageView"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_marginLeft="5dip"
            Android:layout_marginTop="10dip"
            Android:layout_marginRight="5dip"
            Android:tint="#55ff0000"
            Android:src="@drawable/icon" />
    </TableRow>
    <TableRow>
        <TextView
            Android:id="@+id/name"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Name " />
        <TextView Android:id="@+id/name1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="Veer" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/age"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Age" />

        <TextView Android:id="@+id/age1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="23" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/gender"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Gender" />
        <TextView Android:id="@+id/gender1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="Male" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/profession"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Professsion" />
        <TextView Android:id="@+id/profession1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="Mobile Developer" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/phone"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Phone" />
        <TextView Android:id="@+id/phone1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="03333736767" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/email"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Email" />
        <TextView Android:id="@+id/email1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="[email protected]" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/hobby"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Hobby" />
        <TextView Android:id="@+id/hobby1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="Play Games" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/ilike"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  I like" />
        <TextView Android:id="@+id/ilike1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="Java, Objective-c" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/idislike"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  I dislike" />
        <TextView Android:id="@+id/idislike1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="Microsoft" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/address"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Address" />
        <TextView Android:id="@+id/address1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="Johar Mor" />
    </TableRow>
</TableLayout>
211

トップレベルのレイアウトをScrollViewにするだけです。

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

    <TableLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:stretchColumns="1">

        <!-- everything you already have -->

    </TableLayout>
</ScrollView>
432
Ted Hopp

2つの選択肢があります。レイアウト全体をスクロール可能にするか、またはTextViewのみをスクロール可能にすることができます。

最初のケースでは、

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

    <RelativeLayout
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent" >

        <TableLayout
            Android:layout_width="fill_parent"
            Android:layout_height="fill_parent"
            Android:stretchColumns="1" >

            <TableRow>

                <ImageView
                    Android:id="@+id/imageView"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_marginLeft="5dip"
                    Android:layout_marginRight="5dip"
                    Android:layout_marginTop="10dip"
                    Android:src="@drawable/icon"
                    Android:tint="#55ff0000" >
                </ImageView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/name"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Name " >
                </TextView>

                <TextView
                    Android:id="@+id/name1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="Veer" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/age"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Age" >
                </TextView>

                <TextView
                    Android:id="@+id/age1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="23" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/gender"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Gender" >
                </TextView>

                <TextView
                    Android:id="@+id/gender1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="Male" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/profession"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Professsion" >
                </TextView>

                <TextView
                    Android:id="@+id/profession1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="Mobile Developer" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/phone"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Phone" >
                </TextView>

                <TextView
                    Android:id="@+id/phone1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="03333736767" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/email"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Email" >
                </TextView>

                <TextView
                    Android:id="@+id/email1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="[email protected]" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/hobby"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Hobby" >
                </TextView>

                <TextView
                    Android:id="@+id/hobby1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="Play Games" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/ilike"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  I like" >
                </TextView>

                <TextView
                    Android:id="@+id/ilike1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="Java, Objective-c" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/idislike"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  I dislike" >
                </TextView>

                <TextView
                    Android:id="@+id/idislike1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="Microsoft" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/address"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Address" >
                </TextView>

                <TextView
                    Android:id="@+id/address1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="Johar Mor" >
                </TextView>
            </TableRow>

            <Relativelayout>
            </Relativelayout>
        </TableLayout>
    </RelativeLayout>

</ScrollView>

または、先に述べたように、TextViewにはscrollViewを単独で使用できます。

28
Andro Selva

ScrollViewの使い方

ScrollView を使用することはそれほど難しくありません。あなたはただあなたのレイアウトにそれを追加して、あなたが中にスクロールしたいものなら何でも置くことができます。 ScrollViewは1人の子供しか受け取らないので、いくつかのものを中に入れたい場合は、最初のものをLinearLayoutのようなものにする必要があります。

<ScrollView
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:orientation="vertical">

        <!-- things to scroll -->

    </LinearLayout>
</ScrollView>

水平方向にスクロールしたい場合は、 HorizontalScrollView を使用してください。

コンテンツを画面いっぱいにする

この記事 で説明しているように、ScrollViewの内容を画面い​​っぱいに表示したい場合があります。たとえば、READMEの最後にボタンがいくつかあったとします。たとえテキストがスクロールしなくても、ボタンは常にテキストの最後と画面の下部にあるようにします。

内容がスクロールすれば、すべて問題ありません。ただし、コンテンツが画面のサイズより小さい場合、ボタンは一番下にありません。

enter image description here

これは、fillViewPortScrollViewを使用し、コンテンツにレイアウトの重みを使用することで解決できます。 fillViewPortを使用すると、ScrollViewが親領域を埋めます。 LinearLayout内のビューの1つにlayout_weightを設定すると、そのビューは余分なスペースを埋めるように拡張されます。

enter image description here

これがXMLです

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:fillViewport="true">                        <--- fillViewport

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:orientation="vertical">

        <TextView
            Android:id="@+id/textview"
            Android:layout_height="0dp"                <--- 
            Android:layout_weight="1"                  <--- set layout_weight
            Android:layout_width="match_parent"
            Android:padding="6dp"
            Android:text="hello"/>

        <LinearLayout
            Android:layout_height="wrap_content"       <--- wrap_content
            Android:layout_width="match_parent"
            Android:background="@Android:drawable/bottom_bar"
            Android:gravity="center_vertical">

            <Button
                Android:layout_width="0dp"
                Android:layout_weight="1"
                Android:layout_height="wrap_content"
                Android:text="Accept" />

            <Button
                Android:layout_width="0dp"
                Android:layout_weight="1"
                Android:layout_height="wrap_content"
                Android:text="Refuse" />

        </LinearLayout>
    </LinearLayout>
</ScrollView>

この回答のアイディアは、現在削除されている以前の回答から来ました( 10Kユーザーの場合は )。この答えの内容は/の更新と適応です - この記事

20
Suragch

ScrollView は特殊なタイプの FrameLayout で、ユーザーは物理的なディスプレイよりも多くのスペースを占めるビューのリストをスクロールできます。属性をいくつか追加するだけです。 。

<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
     Android:layout_width="fill_parent"
     Android:layout_height="fill_parent"
     Android:fillViewport="true"
     Android:scrollbars = "vertical"
     Android:scrollbarStyle="insideInset"
    >
    <TableLayout
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent"
        Android:stretchColumns="1"
        >
        <!-- Add here which you want -->
    </TableLayout>

</ScrollView>
12
IntelliJ Amiya

上で述べたように、あなたはそれをScrollView...の中に置くことができます、そしてあなたがScroll Viewを水平にしたいならHorizontalScrollView...の中にそれを置きます:

  <HorizontalScrollView>
        <ScrollView>
            <!-- SOME THING -->
        </ScrollView>
    </HorizontalScrollView>

layout_widthおよびlayout_heightコースを設定します。

7
Zuhair Kj

テキストビューでデータをスクロールするには、これをテキストビューに使用します。他にもレイアウトを追加することもできますし、上記のようにレイアウトにスクロールビューを追加することもできます。

/ ** Android:xmlレイアウトのテキストビューではscrollable = true。

TextView txtScroll = (TextView) findViewById(R.id.txt1);
        txtScroll.setMovementMethod(new ScrollingMovementMethod());

* //

4
Sandip Lawate

TableLayoutをScrollView Layout内に配置します。これで問題は解決します。

4
Rasel