ScrollView in Android
In Android, a ScrollView is a view group that is used to make vertically scrollable views. A scroll view contains a single direct child only. In order to place multiple views in the scroll view, one needs to make a view group(like LinearLayout) as a direct child and then we can define many views inside it. A ScrollView supports Vertical scrolling only, so in order to create a horizontally scrollable view, HorizontalScrollView is used.
XML attributes of ScrollView
Attribute |
Description |
---|---|
android:fillViewport | Defines whether the scrollview should stretch its content to fill the viewport. |
Inherited Attributes:
From FrameLayout
Attributes |
Description |
---|---|
android:measureAllChildren | Determines whether to measure all children or just those in the VISIBLE or INVISIBLE state when measuring. Defaults to false. |
From View
Attributes |
Description |
---|---|
android:alpha | alpha property of the view, as a value between 0 (completely transparent) and 1 (completely opaque). |
android:background | A drawable to use as the background. |
android:clickable | Defines whether this view reacts to click events. |
android:contentDescription | Defines text that briefly describes content of the view. |
android:id | Supply an identifier name for this view, to later retrieve it with View.findViewById() or Activity.findViewById(). |
android:isScrollContainer | Set this if the view will serve as a scrolling container, meaning that it can be resized to shrink its overall window so that there will be space for an input method. |
android:minHeight | Defines the minimum height of the view. |
android:minWidth | Defines the minimum width of the view. |
android:onClick | Name of the method in this View’s context to invoke when the view is clicked. |
android:padding | Sets the padding, in pixels, of all four edges. |
android:scrollbars | Defines which scrollbars should be displayed on scrolling or not. |
From ViewGroup
Attributes |
Description |
---|---|
android:addStatesFromChildren | Sets whether this ViewGroup’s drawable states also include its children’s drawable states. |
android:animateLayoutChanges | Defines whether changes in layout should cause a LayoutTransition to run. |
android:clipChildren | Defines whether a child is limited to draw inside of its bounds or not. |
android:clipToPadding | Defines whether the ViewGroup will clip its children and resize any EdgeEffect to its padding, if padding is not zero. |
android:layoutAnimation | Defines the layout animation to use the first time the ViewGroup is laid out. |
android:layoutMode | Defines the layout mode of this ViewGroup. |
android:splitMotionEvents | Sets whether this ViewGroup should split MotionEvents to separate child views during touch event dispatch. |
Approach
This example demonstrates the steps involved to create a ScrollView in Android using Kotlin.
Step 1: Create a new project
- Click on File, then New => New Project.
- Choose “Empty Activity” for the project template.
- Select language as Kotlin.
- Select the minimum SDK as per your need.
Step 2: Modify strings.xml
Add some strings inside the strings.xml file to display those strings in the app.
strings.xml
< resources > < string name = "app_name" >gfgapp_scrollview</ string > < string name = "scrolltext" >Kotlin is a statically typed, general-purpose programming language developed by JetBrains, that has built world-class IDEs like IntelliJ IDEA, PhpStorm, Appcode, etc. It was first introduced by JetBrains in 2011 and a new language for the JVM. Kotlin is object-oriented language, and a “better language” than Java, but still be fully interoperable with Java code. Kotlin is sponsored by Google, announced as one of the official languages for Android Development in 2017. Advantages of Kotlin language: Easy to learn – Basic is almost similar to java. If anybody worked in java then easily understand in no time. Kotlin is multi-platform – Kotlin is supported by all IDEs of java so you can write your program and execute them on any machine which supports JVM. It’s much safer than Java. It allows using the Java frameworks and libraries in your new Kotlin projects by using advanced frameworks without any need to change the whole project in Java. Kotlin programming language, including the compiler, libraries and all the tooling is completely free and open source and available on github. Here is the link for Github https://github.com/JetBrains/kotlin Applications of Kotlin language: You can use Kotlin to build Android Application. Kotlin can also compile to JavaScript, and making it available for the frontend. It is also designed to work well for web development and server-side development.Kotlin is a statically typed, general-purpose programming language developed by JetBrains that has built world-class IDEs like IntelliJ IDEA, PhpStorm, Appcode, etc. It was first introduced by JetBrains in 2011.Kotlin is object-oriented language and a better language than Java, but still be fully interoperable with Java code. A constructor is a special member function that is invoked when an object of the class is created primarily to initialize variables or properties. A class needs to have a constructor and if we do not declare a constructor, then the compiler generates a default constructor. Kotlin has two types of constructors – Primary Constructor Secondary Constructor A class in Kotlin can have at most one primary constructor, and one or more secondary constructors. The primary constructor initializes the class, while the secondary constructor is used to initialize the class and introduce some extra logic. Explanation: When we create the object add for the class then the values 5 and 6 passes to the constructor. The constructor parameters a and b initialize with the parameters 5 and 6 respectively. The local variable c contains the sum of variables. In the main, we access the property of contructor using ${add.c}. Explanation: Here, we have initialized the constructor parameters with some default values emp_id = 100 and emp_name = “abc”. When the object emp is created we passed the values for both the parameters so it prints those values. But, at the time of object emp2 creation, we have not passed the emp_name so initializer block uses the default values and print to the standard output.</ string > </ resources > |
Step 3: Modify activity_main.xml
Add the ScrollView and inside the ScrollView add a TextView to display the strings that are taken in the strings.xml file.
activity_main.xml
<? xml version = "1.0" encoding = "utf-8" ?> < androidx.constraintlayout.widget.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android" xmlns:app = "http://schemas.android.com/apk/res-auto" xmlns:tools = "http://schemas.android.com/tools" android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = ".MainActivity" > < ScrollView android:layout_width = "match_parent" android:layout_height = "match_parent" tools:layout_editor_absoluteX = "0dp" tools:layout_editor_absoluteY = "-127dp" > < TextView android:id = "@+id/scrolltext" style = "@style/AppTheme" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:text = "@string/scrolltext" android:textColor = "@color/green" /> </ ScrollView > </ androidx.constraintlayout.widget.ConstraintLayout > |
As already mentioned above, Scrollview can only contain one direct child. In this case, the child is textview. On noticing this textview you will realize that the text added inside textview is mentioned as @string/scrolltext which refers to a string resource inside the strings.xml file.
Step 4: MainActivity.kt file
There is nothing to do with the MainActivity.kt file, so keep it as it is.
MainActivity.kt
package com.example.gfgapp_scrollview import androidx.appcompat.app.AppCompatActivity import android.os.Bundle class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super .onCreate(savedInstanceState) setContentView(R.layout.activity_main) } } |