Discrete SeekBar in Kotlin
Last Updated :
28 Oct, 2021
In Android Discrete SeekBar is just an advancement of progressBar just like the SeekBar, the only difference in SeekBar and discrete SeekBar being that in discrete SeekBar, we can only set the value only to discrete values like 1, 2, 3, and so on.
In this article, we will be discussing how to create a SeekBar in Kotlin.
Different Attributes of Android Discrete SeekBar
XML Attributes |
Description |
android:max |
Sets the maximum value |
android:min |
Sets the minimum value |
android:progress |
Specifies the already set progress value |
android:progressDrawable |
Sets drawable of the progress mode. |
android:thumb |
Helps to draw a thumb on seekBar.. |
android:thumbTint |
Set blending mode to apply the thumb tint. |
android:thumbTintMode |
Set tint to apply on tick mark drawable. |
android:tickMarkTint |
Set blending mode used to apply the tick mark tint. |
android:tickMarkTintMode |
Set blending mode used to apply the tick mark tint. |
android:background |
Sets background of the view |
android:id |
Sets unique id of the view |
android:elevation |
Sets base z-depth of the view |
First step is to create a new Project in Android Studio. For this follow these steps:
- Click on File, then New and then New Project, and give name whatever you like
- Then, select Kotlin language Support and click next button.
- Select minimum SDK, whatever you need
- Select Empty activity and then click finish.
After doing this you will see some directories on the left hand side after your project/gradle is finished loading. It should look like this:
After that, we need to design our layout. For that we need to work with the XML file. Go to app > res > layout and paste the following code:
Modify activity_main.xml file
XML
<? xml version = "1.0" encoding = "utf-8" ?>
< RelativeLayout
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:gravity = "center"
android:orientation = "vertical" >
< SeekBar
android:id = "@+id/seekBar"
style = "@style/Widget.AppCompat.SeekBar.Discrete"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:min = "1"
android:max = "10"
android:progress = "7" />
</ RelativeLayout >
|
Note:
style=”@style/Widget.AppCompat.SeekBar.Discrete”
This style is used to display the seekBar to make it work for discrete values.
Create SeekBar in MainActivity.kt file
Open app/src/main/java/yourPackageName/MainActivity.kt and do the following changes:
Java
package com.geeksforgeeks.myfirstKotlinapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.SeekBar
import android.widget.Toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super .onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val seekBar = findViewById<SeekBar>(R.id.seekBar)
seekBar?.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
}
override fun onStartTrackingTouch(seekBar: SeekBar) {
}
override fun onStopTrackingTouch(seekBar: SeekBar) {
Toast.makeText( this @MainActivity , "Discrete Value of SeekBar is " + seekBar.progress, Toast.LENGTH_SHORT).show()
}
})
}
}
|
AndroidManifest.xml file
XML
<? xml version = "1.0" encoding = "utf-8" ?>
package = "i.apps.myapplication" >
< application
android:allowBackup = "true"
android:icon = "@mipmap/ic_launcher"
android:label = "@string/app_name"
android:roundIcon = "@mipmap/ic_launcher_round"
android:supportsRtl = "true"
android:theme = "@style/AppTheme" >
< activity android:name = ".MainActivity" >
< intent-filter >
< action android:name = "android.intent.action.MAIN" />
< category android:name = "android.intent.category.LAUNCHER" />
</ intent-filter >
</ activity >
</ application >
</ manifest >
|
Run as Emulator:
Share your thoughts in the comments
Please Login to comment...