일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- fragment
- recyclerview
- 구분선
- searchview
- adapter
- Android
- IntentTestRule
- 생명주기
- 뷰변경 감지
- 리사이클러뷰
- LayoutManger
- espresso
- 안드로이드13
- Error:Execution failed for task ':app:mergeDebugResources'
- ui test
- ActivityTestRule
- 테마 아이콘
- 스와이프
- 고차함수
- high order function
- 안드로이드개발레벨업교과서
- viewholder
- 재사용
- binding adapter
- Fragment 수동 추가
- Fragment에서 Activity의 함수 사용하기
- 코틀린
- 안드로이드
- 코딜리티
- 안드로이드스튜디오
Archives
- Today
- Total
룬아님의 취중코딩
(Compose) Text의 자간이 넓어 보일 때 본문
MaterialTheme(
colors = colors,
typography = Typography(),
shapes = Shapes(),
content = content
)
별도로 typography를 설정하지 않는다면 아래와 같은 font style이 자동으로 설정되는데
constructor(
defaultFontFamily: FontFamily = FontFamily.Default,
h1: TextStyle = TextStyle(
fontWeight = FontWeight.Light,
fontSize = 96.sp,
letterSpacing = (-1.5).sp
),
h2: TextStyle = TextStyle(
fontWeight = FontWeight.Light,
fontSize = 60.sp,
letterSpacing = (-0.5).sp
),
h3: TextStyle = TextStyle(
fontWeight = FontWeight.Normal,
fontSize = 48.sp,
letterSpacing = 0.sp
),
h4: TextStyle = TextStyle(
fontWeight = FontWeight.Normal,
fontSize = 34.sp,
letterSpacing = 0.25.sp
),
h5: TextStyle = TextStyle(
fontWeight = FontWeight.Normal,
fontSize = 24.sp,
letterSpacing = 0.sp
),
h6: TextStyle = TextStyle(
fontWeight = FontWeight.Medium,
fontSize = 20.sp,
letterSpacing = 0.15.sp
),
subtitle1: TextStyle = TextStyle(
fontWeight = FontWeight.Normal,
fontSize = 16.sp,
letterSpacing = 0.15.sp
),
subtitle2: TextStyle = TextStyle(
fontWeight = FontWeight.Medium,
fontSize = 14.sp,
letterSpacing = 0.1.sp
),
body1: TextStyle = TextStyle(
fontWeight = FontWeight.Normal,
fontSize = 16.sp,
letterSpacing = 0.5.sp
),
body2: TextStyle = TextStyle(
fontWeight = FontWeight.Normal,
fontSize = 14.sp,
letterSpacing = 0.25.sp
),
button: TextStyle = TextStyle(
fontWeight = FontWeight.Medium,
fontSize = 14.sp,
letterSpacing = 1.25.sp
),
caption: TextStyle = TextStyle(
fontWeight = FontWeight.Normal,
fontSize = 12.sp,
letterSpacing = 0.4.sp
),
overline: TextStyle = TextStyle(
fontWeight = FontWeight.Normal,
fontSize = 10.sp,
letterSpacing = 1.5.sp
)
)
이때 letterSpacing에 의해 자간이 정해진다.
https://developer.android.com/reference/android/widget/TextView#getLetterSpacing()
위의 링크에 의하면 일반적인 TextView에는 letterSpacing이 0dp로 설정되어 있어 기존의 디자인과 달라지게 된다.
자주 사용되는 TopAppBar의 코드를 보면
AppBar(
backgroundColor,
contentColor,
elevation,
AppBarDefaults.ContentPadding,
RectangleShape,
modifier
) {
....
Row(
Modifier.fillMaxHeight().weight(1f),
verticalAlignment = Alignment.CenterVertically
) {
ProvideTextStyle(value = MaterialTheme.typography.h6) {
CompositionLocalProvider(
LocalContentAlpha provides ContentAlpha.high,
content = title
)
}
}
MaterialTheme.typography.h6로 style을 정해주고 있는 것을 볼 수 있기 때문에
별도로 Modifier를 설정해 주지 않으면 예상과 다른 fontWeight, size, lineSpacing을 만나게 된다.
기존과 비슷한 Toolbar의 Text를 만들고 싶다면
Text(
modifier = Modifier.offset(x = (-8).dp),
text = stringResource(id = R.string.create_timetable),
fontSize = dimensionResource(id = R.dimen.title).value.sp,
color = colorResource(id = R.color.gray800),
fontWeight = FontWeight.Normal,
letterSpacing = 0.sp
)
이렇게 사용해보자
반응형
'개발 > 안드로이드 개발' 카테고리의 다른 글
IllegalStateException : Detected inconsistent adapter updates. (0) | 2023.04.10 |
---|---|
Android 13 Notification permission 분기 (0) | 2023.03.29 |
(Android) 패키지명으로 SHA-1 키값 가져오는 방법 (0) | 2023.03.22 |
(Android) Firebase Analytics 로깅 실시간 확인 (0) | 2023.03.20 |
Compose lineheight style (0) | 2023.03.13 |
Comments