סגנון הטקסט

לרכיב Text composable יש כמה פרמטרים אופציונליים לעיצוב התוכן שלו. בהמשך מפורטים פרמטרים שמתאימים לתרחישי השימוש הנפוצים ביותר עם טקסט. כל הפרמטרים של Text מפורטים בקוד המקור של Compose Text.

בכל פעם שמגדירים אחד מהפרמטרים האלה, הסגנון חל על כל ערך הטקסט. אם אתם צריכים להחיל כמה סגנונות באותה שורה או באותן פסקאות, כדאי לעיין בקטע בנושא כמה סגנונות מוטבעים.

עיצובים נפוצים של טקסט

בקטעים הבאים מתוארות דרכים נפוצות לעיצוב הטקסט.

שינוי של צבע הטקסט

@Composable
fun BlueText() {
    Text("Hello World", color = Color.Blue)
}

המילים

שינוי גודל הטקסט

@Composable
fun BigText() {
    Text("Hello World", fontSize = 30.sp)
}

המילים

הפיכת הטקסט לנטוי

משתמשים בפרמטר fontStyle כדי להטות טקסט (או להגדיר FontStyle אחר).

@Composable
fun ItalicText() {
    Text("Hello World", fontStyle = FontStyle.Italic)
}

המילים

הדגשת הטקסט

משתמשים בפרמטר fontWeight כדי להדגיש טקסט (או להגדיר FontWeight אחר).

@Composable
fun BoldText() {
    Text("Hello World", fontWeight = FontWeight.Bold)
}

המילים

הוספת צל

הפרמטר style מאפשר להגדיר אובייקט מסוג TextStyle ולהגדיר כמה פרמטרים, למשל shadow. ‫Shadow מקבל צבע לצל, את ההיסט או את המיקום שלו ביחס ל-Text ואת רדיוס הטשטוש, שקובע עד כמה הצל מטושטש.

@Composable
fun TextShadow() {
    val offset = Offset(5.0f, 10.0f)
    Text(
        text = "Hello world!",
        style = TextStyle(
            fontSize = 24.sp,
            shadow = Shadow(
                color = Color.Blue, offset = offset, blurRadius = 3f
            )
        )
    )
}

המילים

הוספת כמה סגנונות לטקסט

כדי להגדיר סגנונות שונים באותו רכיב Text composable, משתמשים ב-AnnotatedString, מחרוזת שאפשר להוסיף לה הערות עם סגנונות של הערות שרירותיות.

AnnotatedString הוא מחלקת נתונים שמכילה:

  • ערך של Text
  • List של SpanStyleRange, ששווה לעיצוב מוטבע עם טווח מיקום בתוך ערך הטקסט
  • List של ParagraphStyleRange, שמציין את יישור הטקסט, כיוון הטקסט, גובה השורה וסגנון הכניסה של הטקסט

TextStyle מיועד לשימוש ב-Text, ואילו SpanStyle ו-ParagraphStyle מיועדים לשימוש ב-AnnotatedString. מידע נוסף על כמה סגנונות בפסקה זמין במאמר הוספה של כמה סגנונות בפסקה.

AnnotatedString יש לו builder בטוח לטיפוסים כדי להקל על יצירת: buildAnnotatedString.

@Composable
fun MultipleStylesInText() {
    Text(
        buildAnnotatedString {
            withStyle(style = SpanStyle(color = Color.Blue)) {
                append("H")
            }
            append("ello ")

            withStyle(style = SpanStyle(fontWeight = FontWeight.Bold, color = Color.Red)) {
                append("W")
            }
            append("orld")
        }
    )
}

המילים

אפשר להשתמש ב-AnnotatedString.fromHtml() כדי להציג טקסט בפורמט HTML עם קישורים שאפשר ללחוץ עליהם באפליקציית Jetpack Compose. הפונקציה הזו ממירה מחרוזת עם תגי HTML ל-AnnotatedString, ומאפשרת עיצוב וטיפול בקישורים.

דוגמה: HTML עם קישור מעוצב

קטע הקוד הזה מעבד טקסט בפורמט HTML עם קישור, ומחיל על הקישור סגנון ספציפי:

נקודות עיקריות לגבי הקוד
  • AnnotatedString.fromHtml() ממירה את המחרוזת htmlText ל-AnnotatedString. הפרמטר linkStyles משמש להתאמה אישית של מראה הקישור.

  • TextLinkStyles מגדיר את הסגנון של הקישורים ב-HTML. ‫SpanStyle מגדיר את עיטור הטקסט, סגנון הגופן והצבע של הקישורים.

  • הקומפוזבילי Text מציג את התוצאה AnnotatedString.

התוצאה

קטע הקוד הזה מאפשר להציג את הטקסט Jetpack Compose כקישור שאפשר ללחוץ עליו, עם עיצוב של צבע כחול, קו תחתון וכתב נטוי:

כותרת ברמה 1 'Jetpack Compose' ואחריה הטקסט 'Build better apps with Jetpack
    Compose', כאשר Jetpack Compose הוא קישור שאפשר ללחוץ עליו, והוא מעוצב בצבע כחול, עם קו תחתון ועם אותיות מוטות.
איור 2. כותרת ופסקה, כאשר 'Jetpack Compose' בפסקה הוא קישור שניתן ללחיצה עם סגנון.

הפעלת סגנון מתקדם באמצעות Brush

כדי להפעיל סגנונות טקסט מתקדמים יותר, אפשר להשתמש ב-Brush API עם TextStyle ו-SpanStyle. בכל מקום שבו בדרך כלל משתמשים ב-TextStyle או ב-SpanStyle, אפשר עכשיו להשתמש גם ב-Brush.

שימוש במברשת לעיצוב טקסט

מגדירים את הטקסט באמצעות מברשת מובנית ב-TextStyle. לדוגמה, אפשר להגדיר מברשת linearGradient לטקסט באופן הבא:

val gradientColors = listOf(Cyan, LightBlue, Purple /*...*/)

Text(
    text = text,
    style = TextStyle(
        brush = Brush.linearGradient(
            colors = gradientColors
        )
    )
)

שימוש בפונקציה `linearGradient` של Brush API עם רשימה מוגדרת של צבעים.
איור 3. שימוש בפונקציה linearGradient של Brush API עם רשימה מוגדרת של צבעים.

אתם לא מוגבלים לערכת הצבעים או לסגנון הצביעה הספציפיים האלה. הבאנו כאן דוגמה פשוטה להדגשה, אבל אתם יכולים להשתמש בכל אחד מהמברשות המובנות או אפילו רק בSolidColor כדי לשפר את הטקסט.

שילובים

אפשר להשתמש ב-Brush לצד TextStyle ו-SpanStyle, ולכן השילוב עם TextField ו-buildAnnotatedString הוא חלק.

מידע נוסף על השימוש ב-Brush API בתוך TextField זמין במאמר הזנת סגנון באמצעות Brush API.

עיצוב נוסף באמצעות SpanStyle

החלת מברשת על טווח טקסט

אם רוצים להשתמש במברשת רק בחלקים מהטקסט, משתמשים ב-buildAnnotatedString וב-API‏ SpanStyle, יחד עם המברשת והמעבר ההדרגתי הרצויים.

Text(
    text = buildAnnotatedString {
        append("Do not allow people to dim your shine\n")
        withStyle(
            SpanStyle(
                brush = Brush.linearGradient(
                    colors = rainbowColors
                )
            )
        ) {
            append("because they are blinded.")
        }
        append("\nTell them to put some sunglasses on.")
    }
)

שימוש במברשת שמוגדרת כברירת מחדל עם linearGradient כסגנון של Text.
איור 4. שימוש במברשת שמוגדרת כברירת מחדל עם linearGradient כסגנון ל-Text.
שקיפות בטווח של טקסט

כדי לשנות את רמת השקיפות של טווח טקסט מסוים, משתמשים בפרמטר האופציונלי alpha של SpanStyle. משתמשים באותו מברשת לשני החלקים של הטקסט, ומשנים את פרמטר האלפא בטווח המתאים. בדוגמת הקוד, הטווח הראשון של הטקסט מוצג באטימות של חצי (alpha =.5f) והטווח השני מוצג באטימות מלאה (alpha = 1f).

val brush = Brush.linearGradient(colors = rainbowColors)

buildAnnotatedString {
    withStyle(
        SpanStyle(
            brush = brush, alpha = .5f
        )
    ) {
        append("Text in ")
    }
    withStyle(
        SpanStyle(
            brush = brush, alpha = 1f
        )
    ) {
        append("Compose ❤️")
    }
}

שימוש ב-buildAnnotatedString ובפרמטר אלפא של SpanStyle, יחד עם linearGradient כדי להוסיף אטימות לטווח של טקסט.
איור 5. שימוש ב-buildAnnotatedString ובפרמטר האלפא של SpanStyle, יחד עם linearGradient כדי להוסיף אטימות לטווח של טקסט.

החלת אפקט של טקסט רץ על טקסט

אפשר להחיל את משנה ה-basicMarquee על כל רכיב שאפשר להרכיב כדי ליצור אפקט של גלילה מונפשת. אפקט המרקיז מתרחש אם התוכן רחב מדי ולא מתאים למגבלות הזמינות. כברירת מחדל, basicMarquee מוגדר עם הגדרות מסוימות (כמו מהירות והשהיה ראשונית), אבל אפשר לשנות את הפרמטרים האלה כדי להתאים אישית את האפקט.

קטע הקוד הבא מיישם אפקט בסיסי של marquee ברכיב Text composable:

@Composable
fun BasicMarqueeSample() {
    // Marquee only animates when the content doesn't fit in the max width.
    Column(Modifier.width(400.dp)) {
        Text(
            "Learn about why it's great to use Jetpack Compose",
            modifier = Modifier.basicMarquee(),
            fontSize = 50.sp
        )
    }
}

איור 6. המשנה basicMarquee חל על הטקסט.

מקורות מידע נוספים