Jetpack Compose之選擇器使用實例講解
選擇器是啥
選擇器主要是指Checkbox復選框,單選開關Switch,滑桿組件Slider等用于提供給用戶選擇一些值和程序交互的組件,比如像復選框Checkbox,可以讓用戶選擇一個或者多個選項,它可以將一個選項打開或者是關閉,通常用來做線上調(diào)查問卷或者是模擬考試的場景程序中,再比如滑桿組件可以用來作為調(diào)節(jié)音量和亮度的數(shù)值調(diào)整,或者是做進度條。
實例解析
1.Checkbox復選框
Checkbox允許用戶從一個集合中選擇一個或者多個選項,而且它可以將一個選項打開或者是關閉,下列是Checkbox的參數(shù)列表
@Composable
fun Checkbox(
checked: Boolean, // 是否被選中
onCheckedChange: ((Boolean) -> Unit)?, // 當復選框被點擊時的回調(diào)
modifier: Modifier = Modifier,
enabled: Boolean = true, // 是否啟用復選框
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
colors: CheckboxColors = CheckboxDefaults.colors() // 復選框的演示組
)
我們可以通過下面的代碼了解Checkbox的使用方法
@Composable
fun CheckBoxDemo()
{
val checkedState = remember {
mutableStateOf(true)
}
Checkbox(checked = checkedState.value, onCheckedChange = {
checkedState.value = it
},
colors = CheckboxDefaults.colors(checkedColor = Color(0xFF0079D3)))
}
運行結果:

2.TriStateCheckbox三狀態(tài)選擇框
當我們的復選框有很多個的時候,往往希望能夠統(tǒng)一選擇或者時取消,這種場景下我們就可以使用TriStateCheckbox ,代碼如下:
@Composable
fun TriStateCheckBoxDemo()
{
val(state,onStateChange) = remember {
mutableStateOf(true)
}
val(state2,onStateChange2) = remember {
mutableStateOf(true)
}
val parentState = remember(state, state2) {
if(state && state2) ToggleableState.On
else if(!state && !state2) ToggleableState.Off
else ToggleableState.Indeterminate
}
val onParentClick = {
val s = parentState != ToggleableState.On
onStateChange(s)
onStateChange2(s)
}
Column(modifier = Modifier.padding(10.dp,0.dp,0.dp,0.dp)) {
TriStateCheckbox(state = parentState, onClick = onParentClick,
colors = CheckboxDefaults.colors(checkedColor = MaterialTheme.colors.primary)
)
Checkbox(checked = state, onCheckedChange = onStateChange)
Checkbox(checked = state2, onCheckedChange = onStateChange2)
}
}
運行結果如下。



當復選框全選中時,TriStateCheckbox顯示已完成的狀態(tài),而如果只有部分復選框被選中時,TriStateCheckbox則顯示不確定狀態(tài),當我們在這個時候點擊它時,則會將剩余沒有選中的復選框設置為選中狀態(tài),當我們?nèi)サ羲羞x中狀態(tài)時,TriStateCheckbox的狀態(tài)也被置成了未選中的狀態(tài)。
3.Switch單選開關
Switch組件可以控制單個項關閉或者是開啟,參數(shù)列表如下
@Composable
@OptIn(ExperimentalMaterialApi::class)
fun Switch(
checked: Boolean, // 開關的狀態(tài)
onCheckedChange: ((Boolean) -> Unit)?, 點擊開關的回調(diào),會獲得最新的開關狀態(tài)
modifier: Modifier = Modifier,
enabled: Boolean = true, // 是否啟用
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
colors: SwitchColors = SwitchDefaults.colors() // 開關組的顏色。
)
Switch組件的使用也特別簡單,代碼如下:
@Composable
fun SwitchDemo()
{
val checkedState = remember {
mutableStateOf(true)
}
Switch(checked = checkedState.value, onCheckedChange = {
checkedState.value = it
})
}
運行結果:

4.Slider滑桿組件
slider組件類似于傳統(tǒng)視圖的SeekBar,可以用來做音量,亮度之類的數(shù)值調(diào)整或者是進度條,我們先看看它的參數(shù)列表
@Composable
fun Slider(
value: Float, // 進度值
onValueChange: (Float) -> Unit, // 進度改變的監(jiān)聽
modifier: Modifier = Modifier, // 修飾符
enabled: Boolean = true,
valueRange: ClosedFloatingPointRange<Float> = 0f..1f, // 進度值的范圍默認是0到1
/*@IntRange(from = 0)*/
steps: Int = 0,
onValueChangeFinished: (() -> Unit)? = null,
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
colors: SliderColors = SliderDefaults.colors() // 滑桿顏色設置,默認值是SliderDefaults.colors
)
其中,colors參數(shù)是用于設置滑桿各部位的顏色?;瑮U組件中可設置顏色的區(qū)域很多,例如滑桿小圓球的顏色,滑桿進度條顏色,滑桿底色等,step參數(shù)將進度條平分為(step+1) 段,比如當分成兩段時,進度條在第一段之間拉動,超過第一段的一半就自動到第一段,沒超過就退回到原來的位置,Sliderbar的使用代碼如下。
@Composable
fun SliderDemo()
{
var sliderPosition by remember {
mutableStateOf(0f)
}
Text(text = "%.1f".format(sliderPosition*100) + "%")
Slider(value = sliderPosition, onValueChange = {sliderPosition = it})
}
運行結果如下

總結
本文主要介紹了復選框,三狀態(tài)選擇框,單選開關和滑桿組件,讀者應該自己手敲一遍,記憶會更加牢靠。在寫測試demo的時候,建議讀者也盡量使用這些組件,一是可以熟悉他們的使用,二是讓自己寫的demo更加與眾不同
到此這篇關于Jetpack Compose之選擇器使用實例講解的文章就介紹到這了,更多相關Jetpack Compose選擇器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Android使用ViewPager快速切換Fragment時卡頓的優(yōu)化方案
今天小編就為大家分享一篇關于Android使用ViewPager快速切換Fragment時卡頓的優(yōu)化方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12
android webview獲取html代碼和根據(jù)id獲取value實例
這篇文章主要介紹了android webview獲取html代碼和根據(jù)id獲取value實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Android編程基于自定義控件實現(xiàn)時鐘功能的方法
這篇文章主要介紹了Android編程基于自定義控件實現(xiàn)時鐘功能的方法,結合實例形式詳細分析了Android自定義控件的定義及時鐘功能相關實現(xiàn)技巧,需要的朋友可以參考下2018-03-03
Android實現(xiàn)瘋狂連連看游戲之游戲效果預覽(一)
這篇文章主要為大家詳細介紹了Android實現(xiàn)瘋狂連連看游戲之游戲的效果預覽,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03
Android使用ViewPager實現(xiàn)翻頁效果
這篇文章主要為大家詳細介紹了Android使用ViewPager實現(xiàn)翻頁效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05
5分鐘快速實現(xiàn)Android爆炸破碎酷炫動畫特效的示例
本篇文章主要介紹了5分鐘快速實現(xiàn)Android爆炸破碎酷炫動效的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
Eclipse工程轉為兼容Android Studio模式的方法步驟圖文詳解
這篇文章主要介紹了Eclipse工程轉為兼容Android Studio模式的方法步驟,本文圖文并茂給大家介紹的非常詳細,需要的朋友可以參考下2017-12-12

