You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

110 lines
4.2 KiB

package org.jetbrains.compose.demo.widgets.ui.screens
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.FavoriteBorder
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.unit.dp
import org.jetbrains.compose.demo.widgets.theme.purple
import org.jetbrains.compose.demo.widgets.theme.purple200
import org.jetbrains.compose.demo.widgets.theme.typography
import org.jetbrains.compose.demo.widgets.ui.WidgetsType
@Composable
fun Buttons() {
Column(Modifier.testTag(WidgetsType.BUTTONS.testTag)) {
Button(onClick = {}, modifier = Modifier.padding(8.dp)) {
Text(text = "Main Button")
}
TextButton(onClick = {}, modifier = Modifier.padding(8.dp)) {
Text(text = "Text Button")
}
TextButton(onClick = {}, modifier = Modifier.padding(8.dp), enabled = false) {
Text(text = "Text Disabled")
}
Button(onClick = {}, modifier = Modifier.padding(8.dp), enabled = false) {
Text(text = "Disabled")
}
Button(
onClick = {},
modifier = Modifier.padding(8.dp),
elevation = ButtonDefaults.elevation()
) {
Text(text = "Flat")
}
Button(
onClick = {},
modifier = Modifier.padding(8.dp),
shape = RoundedCornerShape(12.dp)
) {
Text(text = "Rounded")
}
OutlinedButton(onClick = {}, modifier = Modifier.padding(8.dp)) {
Text(text = "Outline")
}
Button(onClick = {}, modifier = Modifier.padding(8.dp)) {
Row {
Icon(Icons.Default.FavoriteBorder, contentDescription = null, modifier = Modifier.padding(end = 4.dp))
Text(text = "Icon Button")
}
}
Button(onClick = {}, modifier = Modifier.padding(8.dp)) {
Text(text = "Icon Button")
Icon(Icons.Default.FavoriteBorder, contentDescription = null, modifier = Modifier.padding(start = 4.dp))
}
//custom background buttons
val outlineButtonColor = ButtonDefaults.outlinedButtonColors(
contentColor = purple200,
)
val mainButtonColor = ButtonDefaults.buttonColors(
backgroundColor = purple,
contentColor = MaterialTheme.colors.surface
)
OutlinedButton(
colors = outlineButtonColor,
onClick = {},
modifier = Modifier.padding(8.dp)
) {
Text(text = "Outline colors")
}
Button(colors = mainButtonColor, onClick = {}, modifier = Modifier.padding(8.dp)) {
Text(text = "Custom colors")
}
val horizontalGradient = Brush.horizontalGradient(
colors = listOf(MaterialTheme.colors.primary, MaterialTheme.colors.primaryVariant),
0f,
250f
)
val verticalGradient = Brush.verticalGradient(
colors = listOf(MaterialTheme.colors.primary, MaterialTheme.colors.primaryVariant),
startY = 0f,
endY = 100f
)
Text(
text = "Horizontal gradient",
style = typography.body2.copy(color = Color.White),
modifier = Modifier.padding(12.dp).clickable(onClick = {})
.clip(RoundedCornerShape(4.dp))
.background(brush = horizontalGradient).padding(12.dp)
)
Text(
text = "Vertical gradient",
style = typography.body1.copy(color = Color.White),
modifier = Modifier.padding(12.dp).clickable(onClick = {})
.clip(RoundedCornerShape(4.dp))
.background(brush = verticalGradient).padding(12.dp)
)
}
}