Reputation: 97
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
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
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 TextView
s to the layout, not the ScrollView
.
Upvotes: 2