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
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) |
|
) |
|
} |
|
}
|
|
|