簡體   English   中英

Android Jetpack Compose:如何使文本利用完整的行空間並在溢出時將單詞換行?

[英]Android Jetpack Compose: How to make Text utilize complete row space and break the word to new line in case of overflow?

我希望文本利用完整的行空間並在單詞溢出行空間時換行。 有什么辦法可以在 Jetpack Compose Text 中實現這一點? 我在這里沒有找到任何解決方案https://developer.android.com/jetpack/compose/text

預期的:

在此處輸入圖像描述

當前的: 在此處輸入圖像描述

代碼:

class MainActivity : ComponentActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
    
            setContent {
                MaterialTheme {
                    Surface(
                        modifier = Modifier.fillMaxSize(),
                        color = MaterialTheme.colors.background
                    ) {
                        ShowText()
                    }
                }
            }
        }
    }
    
    @Composable
    fun ShowText() {
        Text(text = "This is a veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeerrrrryyyyyyyyyyyy looooooong text", softWrap = true)
    }
    
    @Preview
    @Composable
    fun Preview() {
        MaterialTheme {
            Surface(
                modifier = Modifier.fillMaxSize(),
                color = MaterialTheme.colors.background
            ) {
                ShowText()
            }
    
        }
    }

一種解決方案是用不可破壞的空間替換空間:

@Composable
fun TestLongWord() {
    Box(
        Modifier
            .fillMaxSize()
            .systemBarsPadding()) {
        Text(
            text = "This is a veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeerrrrryyyyyyyyyyyyyyyyyyy looooooong text".useNonBreakingSpace()
        )
    }
}

fun String?.useNonBreakingSpace() = this.orEmpty()
    .replace(
        Constants.REGULAR_SPACE_CHARACTER,
        Constants.NON_BREAKABLE_SPACE_UNICODE
    )

object Constants {
    const val REGULAR_SPACE_CHARACTER = ' '
    const val NON_BREAKABLE_SPACE_UNICODE = '\u00A0'
}

結果是:

結果

來源在這里這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM