Tobias D
Tobias D

Reputation: 97

How to make a ScrollView in kotlin

how can I make a ScrollView which dynamicly adds TextViews to it in the code? right now I have:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
>
<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Create TextView"
    />

<ScrollView
    android:id="@+id/Scroll"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

as the layout file and this as my kotlin file:

class Abfahrtsmonitor : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.abfahrtsmonitor)

    // Variable for counting text view
    var counter: Int = 1;

    // Set a click listener for button widget
    button.setOnClickListener{
        // Create a new TextView instance programmatically
        val text_view: TextView = TextView(this)

        // Creating a LinearLayout.LayoutParams object for text view
        var params : LayoutParams = LayoutParams(
                LayoutParams.MATCH_PARENT, // This will define text         view width
                LayoutParams.WRAP_CONTENT // This will define text view     height
        )
 // Display some text on the newly created text view
        text_view.text = "Hi, i am a TextView. Number : $counter"
 // Finally, add the text view to the view group
        Scroll.addView(text_view)

        // Increment the counter
        counter++

but now I get the error:

java.lang.IllegalStateException: ScrollView can host only one direct child

Upvotes: 1

Views: 20407

Answers (3)

Sundeep Sharma
Sundeep Sharma

Reputation: 72

you can use Horizontal scroll view, like below

<?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"
    android:orientation="horizontal"
    android:background="@android:color/darker_gray">

    <HorizontalScrollView
        android:id="@+id/alphabet_horizon_Scroll"
        android:layout_centerInParent="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:orientation="horizontal">

            <Button
                android:id="@+id/button_1"
                android:layout_width="300dp"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:background="@android:color/holo_orange_light"
                android:drawableRight="@drawable/a"
                android:onClick="onAbuttonClick"
                android:text="@string/a"
                android:layout_gravity="center_horizontal"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp" />

            <Button
                android:id="@+id/button_2"
                android:layout_width="300dp"
                android:layout_height="300dp"
                android:text="@string/b"
                android:onClick="onBbuttonClick"
                android:textStyle="bold"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:backgroundTint="@drawable/round_rectangle"
                style="@style/Widget.Button"
                android:background="@android:color/holo_green_light" />

            <Button
                android:id="@+id/button_3"
                android:layout_width="300dp"
                android:text="@string/c"
                android:onClick="onCbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_blue_light"/>

            <Button
                android:id="@+id/button_4"
                android:layout_width="300dp"
                android:text="@string/d"
                android:onClick="onDbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_orange_light"/>

            <Button
                android:id="@+id/button_5"
                android:layout_width="300dp"
                android:text="@string/e"
                android:onClick="onEbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_red_light"/>

            <Button
                android:id="@+id/button_6"
                android:text="@string/f"
                android:onClick="onFbuttonClick"
                android:layout_width="300dp"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_green_light"/>

            <Button
                android:id="@+id/button_7"
                android:layout_width="300dp"
                android:text="@string/g"
                android:onClick="onGbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_blue_light"/>
            <Button
                android:id="@+id/button_8"
                android:layout_width="300dp"
                android:text="@string/h"
                android:onClick="onHbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_orange_light"/>
            <Button
                android:id="@+id/button_9"
                android:layout_width="300dp"
                android:text="@string/i"
                android:onClick="onIbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_red_light"/>/>
            <Button
                android:id="@+id/button_10"
                android:layout_width="300dp"
                android:text="@string/j"
                android:onClick="onJbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_green_light"/>
            <Button
                android:id="@+id/button_11"
                android:layout_width="300dp"
                android:text="@string/k"
                android:onClick="onKbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_blue_light"/>
            <Button
                android:id="@+id/button_12"
                android:layout_width="300dp"
                android:text="@string/l"
                android:onClick="onLbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_orange_light"/>
            <Button
                android:id="@+id/button_13"
                android:layout_width="300dp"
                android:text="@string/m"
                android:onClick="onMbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_red_light"/>
            <Button
                android:id="@+id/button_14"
                android:layout_width="300dp"
                android:text="@string/n"
                android:onClick="onNbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_green_light"/>
            <Button
                android:id="@+id/button_15"
                android:layout_width="300dp"
                android:text="@string/o"
                android:onClick="onObuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_blue_light"/>
            <Button
                android:id="@+id/button_16"
                android:layout_width="300dp"
                android:text="@string/p"
                android:onClick="onPbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_orange_light"/>
            <Button
                android:id="@+id/button_17"
                android:layout_width="300dp"
                android:text="@string/q"
                android:onClick="onQbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_red_light"/>
            <Button
                android:id="@+id/button_18"
                android:layout_width="300dp"
                android:text="@string/r"
                android:onClick="onRbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_green_light"/>
            <Button
                android:id="@+id/button_19"
                android:layout_width="300dp"
                android:text="@string/s"
                android:onClick="onSbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_blue_light"/>
            <Button
                android:id="@+id/button_20"
                android:layout_width="300dp"
                android:text="@string/t"
                android:onClick="onTbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_orange_light"/>
            <Button
                android:id="@+id/button_21"
                android:layout_width="300dp"
                android:text="@string/u"
                android:onClick="onUbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_red_light"/>
            <Button
                android:id="@+id/button_22"
                android:layout_width="300dp"
                android:text="@string/v"
                android:onClick="onVbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_green_light"/>
            <Button
                android:id="@+id/button_23"
                android:layout_width="300dp"
                android:text="@string/w"
                android:onClick="onWbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_blue_light" />
            <Button
                android:id="@+id/button_24"
                android:layout_width="300dp"
                android:text="@string/x"
                android:onClick="onXbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_orange_light"/>
            <Button
                android:id="@+id/button_25"
                android:layout_width="300dp"
                android:text="@string/y"
                android:onClick="onYbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_red_light"/>
            <Button
                android:id="@+id/button_26"
                android:layout_width="300dp"
                android:text="@string/z"
                android:onClick="onZbuttonClick"
                android:layout_height="300dp"
                android:layout_margin="5dp"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="100sp"
                android:background="@android:color/holo_green_light"/>
        </LinearLayout>
    </HorizontalScrollView>
</RelativeLayout>

Upvotes: 1

ʍѳђઽ૯ท
ʍѳђઽ૯ท

Reputation: 16976

java.lang.IllegalStateException: ScrollView can host only one direct child

ScrollView can host only one child which means it can hold only one view as it's direct child so, something like this will help:

<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/root_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

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

    // Content in here ...
    </LinearLayout>
</ScrollView>

But, this is not the case since you already have LinearLayout in the root of the layout so, you may wanna consider placing ScrollView as the root and the content inside the LinearLayout. http://developer.android.com/reference/android/widget/ScrollView.html

Upvotes: 7

Dimse
Dimse

Reputation: 1506

The ScrollView itself can only hold one child, in this case your layout. The layout can hold multiple views and you should add you TextViews to the layout, not the ScrollView.

Upvotes: 2

Related Questions