Carthographing Jetpack 조합:텍스트
Canvas()
을 어떻게 사용하는지 이해했다.오늘 우리는 텍스트에 주목한다.보시다시피 텍스트와 관련된 기능은 상당히 많은 소프트웨어 패키지에 나타납니다.그래서 이 글의 목적은 어디에서 무엇을 찾을 수 있는지 알아보는 것이다.사용 편의성
Jetpack Compose에 텍스트를 표시하는 것은 매우 간단합니다.다음 코드 세션은 가운데에 있는 사체 텍스트를 제공합니다.크기는 비례와 무관한 픽셀(
sp
)로 제공됩니다.Text(
modifier = Modifier.fillMaxWidth(),
text = "Hello Compose",
textAlign = TextAlign.Center,
fontStyle = FontStyle.Italic,
fontSize = 64.sp
)
Text()
은 androidx.compose.material
에 속한다.좋은 재료가 필요하지 않으면BasicText(
text = "Hello Compose"
)
너는 내가 BasicText()
, androidx.compose.foundation.text
또는 textAlign
을 통과하지 못했다는 것을 알아차렸니?너는 할 수 없다. 매개 변수로.텍스트의 모양새를 구성하려면 주석이 있는 문자열을 사용합니다.보기:val l = mutableListOf<AnnotatedString.Range<SpanStyle>>()
l.add(AnnotatedString.Range(SpanStyle(Color.Red), 0, 5))
l.add(AnnotatedString.Range(SpanStyle(Color.Blue), 6, 13))
BasicText(
text = AnnotatedString(
text = "Hello Compose",
spanStyles = l
)
)
불변류
fontStyle
은 fontSize
에 속한다.파일 설명:The basic data structure of text with multiple styles. To
construct anAnnotatedString
you can useBuilder
.
매개변수
AnnotatedString
은a list of
Range
s that specifiesSpanStyle
s on certain
portion of the text. These styles will be applied in the order
of the list. And theSpanStyle
s applied later can override the
former styles.
나의 예는 주석이 있는 문자열에서 두 개의 다른
androidx.compose.ui.text
을 정의했다.범위는 특정 유형의 항목(예를 들어 spanStyles
), 시작(범위가 효력이 발생할 때)과 끝을 포함한다.끝은 해당 항목이 더 이상 유효하지 않은 위치를 나타냅니다.나의 옷은 색깔이 다르다.Range
은 SpanStyle
, SpanStyle
또는 fontSize
과 같이 다양하게 구성할 수 있습니다.이제 빌더가 위의 문서를 어떻게 처리하는지 살펴보겠습니다.
BasicText(
text = buildAnnotatedString {
withStyle(
style = SpanStyle(
fontSize = 64.sp,
color = Color.Yellow,
background = Color.LightGray
)
) {
append("Hello Compose")
}
addStyle(
style = ParagraphStyle(textAlign = TextAlign.Center),
start = 0, end = length
)
}
)
fontStyle
은 background
에 속해 buildAnnotatedString()
과 같다.실제로 이들은 현재 같은 원본 파일 Annotated String을 공유하고 있습니다.kt.류 androidx.compose.ui.text
은 AnnotatedString
, AnnotatedString.Builder
과 AnnotatedString
등 방법으로 withStyle()
을 구성할 수 있다.나의 예는 append()
을 사용하여 기본적인 외관을 설정하고 addStyle()
을 사용하여th텍스트를 추가한다.withStyle()
은 나의 텍스트를 가운데에 놓았다.당신은 append()
을 알아차렸습니까?addStyle()
에서는 텍스트 길이를 직접 계산하지 않아도 됩니다.클릭 가능한 텍스트
너는 다른 조합 가능한 텍스트와 같은 방식으로 텍스트를 클릭할 수 있다.
BasicText(
text = "Hello Compose",
modifier = Modifier.clickable {
println("Hello")
}
)
이것은 시작을 클릭하는 것과 같이 아주 편리한 일이다.그러나 사용자가 텍스트의 어느 부분을 눌렀는지 알아야 한다면?ClickableText(
text = AnnotatedString(text = "Click here"),
onClick = {
println(it)
}
)
조합 가능 end = length
은 length
에 속한다.파일 설명:A continent version of
BasicText
component to be able to
handle click event on the text.This is a shorthand of
BasicText
withpointerInput
to be
able to handle click event easily.
사용자가 텍스트를 클릭할 때
ClickableText()
을 실행합니다.리셋 함수는 클릭한 캐릭터의 편이도를 수신합니다.기타 텍스트 관련 기능
지금까지 Jetpack Compose의 텍스트 관련 기능을 보여 드렸습니다.그러나 또 다른 텍스트를 처리하는 Jetpack(compose가 아님) 패키지는
androidx.compose.foundation.text
이다.그것은 onClick
과 같은 괜찮은 확장 함수를 포함하고 있다.그것이 어떻게 일을 하는지 우리에게 보여 주시오.따라서 확장 함수는 그 매개 변수를
androidx.core.text
에 전달한다.htmlEncode()
종류는 TextUtils.htmlEncode()
포대에 속한다.그래서 우리는 안드로이드 프레임에 뛰어들었다.특히 TextUtils
은 android.text
이라는 클래스를 포함하고 이 클래스는 정적 androidx.core.text
함수를 가지고 있다.Jetpack Compose가 이 기능을 사용하는 경우 데스크탑의 Compose로 마이그레이션하는 데 도움이 되는 플랫폼에 대한 의존도가 사라질 수 있습니다.금방 따라갈게요.그런데
TextUtilsCompat
은 뭐 해요?Android 설명서 say:Html-encode the string.
이것은 해석에 여지를 남겼다.😎
htmlEncode()
버전을 살펴보겠습니다.그래서 우리는 두 가지를 배웠다.
htmlEncode()
일부 문자가 html에 우호적으로 androidx.core.text.TextUtilsCompat
도 이 플랫폼을 호출할 수 있기 때문에 나의 상술한 가설은 성립되지 않는다.이를 위해서는 코드를 시종일관 htmlEncode()
부분으로 수정해야 한다.TextUtilsCompat
의 확장 기능은 else
(또 다른 텍스트 관련 소프트웨어 패키지)과 capitalize()
에서 모두 사용할 수 있다는 것입니다.첫 번째는 추천하지 않습니다.두 번째는 아니야.따라서 Compose 프로그램에서
kotlin.text
을 사용하면 androidx.compose.ui.text
을 받을 수 있습니다.결론
Jetpack Compose의 텍스트 지원은 상당히 많은 패키지와 하위 패키지에 걸쳐 있습니다.프로그램 작성에 있어서 가장 중요한 결정은 재료 버전이나 더 기본적인 버전을 사용할지 여부입니다.내가 무슨 중요한 일을 놓쳤습니까?당신의 생각을 댓글로 공유해 주세요.
Reference
이 문제에 관하여(Carthographing Jetpack 조합:텍스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tkuenneth/carthographing-jetpack-compose-text-1ogk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)