Skip to content

Commit bf00df6

Browse files
committed
Add minSize to the Button
1 parent 8ca8c34 commit bf00df6

2 files changed

Lines changed: 32 additions & 2 deletions

File tree

Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Button.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import androidx.compose.foundation.style.ExperimentalFoundationStyleApi
2727
import androidx.compose.foundation.style.Style
2828
import androidx.compose.foundation.style.rememberUpdatedStyleState
2929
import androidx.compose.foundation.style.styleable
30+
import androidx.compose.material3.ripple
3031
import androidx.compose.runtime.Composable
3132
import androidx.compose.runtime.remember
3233
import androidx.compose.ui.Alignment
@@ -61,7 +62,7 @@ fun Button(
6162
enabled = enabled,
6263
onClick = onClick,
6364
interactionSource = interactionSource,
64-
indication = null,
65+
indication = ripple(),
6566
)
6667
.styleable(styleState, JetsnackTheme.styles.buttonStyle, style),
6768
content = content,

Jetsnack/app/src/main/java/com/example/jetsnack/ui/theme/Styles.kt

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,55 @@
1414
* limitations under the License.
1515
*/
1616

17-
@file:OptIn(ExperimentalFoundationStyleApi::class)
17+
@file:OptIn(ExperimentalFoundationStyleApi::class, ExperimentalMediaQueryApi::class)
1818

1919
package com.example.jetsnack.ui.theme
2020

2121
import androidx.compose.foundation.shape.CircleShape
2222
import androidx.compose.foundation.shape.RoundedCornerShape
2323
import androidx.compose.foundation.style.ExperimentalFoundationStyleApi
2424
import androidx.compose.foundation.style.Style
25+
import androidx.compose.foundation.style.StyleScope
2526
import androidx.compose.foundation.style.disabled
2627
import androidx.compose.foundation.style.fillWidth
28+
import androidx.compose.foundation.style.hovered
2729
import androidx.compose.foundation.style.pressed
2830
import androidx.compose.foundation.style.selected
31+
import androidx.compose.material3.ButtonDefaults
2932
import androidx.compose.material3.LocalTextStyle
3033
import androidx.compose.runtime.Immutable
34+
import androidx.compose.ui.ExperimentalMediaQueryApi
35+
import androidx.compose.ui.LocalUiMediaScope
36+
import androidx.compose.ui.UiMediaScope
37+
import androidx.compose.ui.UiMediaScope.ViewingDistance
3138
import androidx.compose.ui.graphics.Brush
3239
import androidx.compose.ui.graphics.Color
3340
import androidx.compose.ui.graphics.RectangleShape
3441
import androidx.compose.ui.graphics.TileMode
42+
import androidx.compose.ui.mediaQuery
43+
import androidx.compose.ui.unit.TextUnit
3544
import androidx.compose.ui.unit.dp
3645
import com.example.jetsnack.ui.components.textStyleWithFontFamilyFix
3746

47+
fun StyleScope.adaptiveFontSize(fontSize: TextUnit) {
48+
var scaleFactor = when (LocalUiMediaScope.currentValue.viewingDistance) {
49+
ViewingDistance.Near -> 1f
50+
ViewingDistance.Medium -> 1.72f
51+
ViewingDistance.Far -> 1.5f
52+
else -> 1f
53+
}
54+
scaleFactor = when (LocalUiMediaScope.currentValue.pointerPrecision) {
55+
UiMediaScope.PointerPrecision.Coarse -> scaleFactor * 1f
56+
UiMediaScope.PointerPrecision.Blunt -> scaleFactor * 0.66f
57+
UiMediaScope.PointerPrecision.Fine -> scaleFactor * 1f
58+
UiMediaScope.PointerPrecision.None -> scaleFactor
59+
else -> {
60+
scaleFactor
61+
}
62+
}
63+
fontSize(fontSize * scaleFactor)
64+
}
65+
3866
@Immutable
3967
data class Styles(
4068
val buttonStyle: Style = Style {
@@ -43,6 +71,7 @@ data class Styles(
4371
contentColor(colors.textInteractive)
4472
contentPaddingVertical(8.dp)
4573
contentPaddingHorizontal(24.dp)
74+
minSize(58.dp, 48.dp)
4675
textStyleWithFontFamilyFix(typography.labelLarge)
4776
disabled {
4877
animate {

0 commit comments

Comments
 (0)