MainActivity.kt
package com.cfsuman.jetpackcompose
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.selection.selectable
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
GetScaffold()
}
}
@Composable
fun GetScaffold(){
Scaffold(
topBar = {TopAppBar(
title = {Text(
"LazyColumn Selectable",
color = Color.White)},
backgroundColor = Color(0xFF2A52BE)) },
content = { MainContent()}
)
}
@Composable
fun MainContent(){
Box(
Modifier
.background(Color(0xFFEDEAE0))
.fillMaxSize()
.padding(8.dp)
) {
val alphabets = listOf("A", "B", "C", "D", "E", "F",
"G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")
var selectedIndex by remember { mutableStateOf(-1)}
LazyColumn(
Modifier.fillMaxSize(),
verticalArrangement = Arrangement.spacedBy(8.dp)
) {
itemsIndexed(alphabets){ index, item ->
Card(
modifier = Modifier
.fillMaxWidth()
.wrapContentHeight(
align = Alignment.CenterVertically)
.selectable(
selected = selectedIndex == index,
onClick = {
selectedIndex = if (selectedIndex!=index)
index else -1
}
),
elevation = 4.dp,
shape = RoundedCornerShape(8.dp),
backgroundColor = if (selectedIndex == index)
Color(0xFFDE3163) else Color(0xFF7BB661)
) {
Text(
text = "${index+1}. " + item,
modifier = Modifier.padding(25.dp),
textAlign = TextAlign.Center,
fontSize = 35.sp,
fontWeight = FontWeight.Bold
)
}
}
}
}
}
@Preview
@Composable
fun ComposablePreview(){
//MainContent()
}
}
- jetpack compose - Canvas withTransform
- jetpack compose - Double tap listener
- jetpack compose - Long press listener
- jetpack compose - Dragging
- jetpack compose - Multiple draggable objects
- jetpack compose - Outlined Button
- jetpack compose - TextButton
- jetpack compose - Button elevation
- jetpack compose - TextField request focus
- jetpack compose - TextField size
- jetpack compose - TextField error
- jetpack compose - TextField IME action done
- jetpack compose - Card click
- jetpack compose - LazyColumn items indexed
- jetpack compose - LazyColumn add remove item