You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何实现TextView多行文本的易维护编写?

第一种写法无法生效的原因

Android 布局使用的 XML 语法本身不支持 Python/Kivy 生态里的三引号多行字符串规则。XML 中属性值只能用成对的单引号/双引号包裹,解析器遇到第二个匹配的引号就会判定属性值结束,你写的三引号会被识别为语法错误,自然无法正常运行。

类似多行字符串的实现方案

不需要更换 TextView 组件,也无需额外添加特殊属性,推荐两种符合 Android 开发规范、且可读性和可维护性都很高的写法:

方案1:将长文本存入字符串资源文件(官方推荐)

Android 推荐将所有文本内容统一存放在 res/values/strings.xml 资源文件中,你可以直接在该文件中编写多行文本:

<string name="oncreate_desc">
onCreate(): 当Activity首次被创建时由系统调用\n
你可以在这里初始化所有UI元素或数据对象\n
你还可以获取Activity的savedInstanceState参数,其中包含了之前保存的状态,你可以通过该参数恢复之前的页面状态
</string>

之后在布局文件中直接引用该资源即可:

<TextView
    android:id="@+id/textView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="68dp"
    android:text="@string/oncreate_desc"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.498"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView2" />

方案2:代码中使用多行字符串赋值

如果你使用 Kotlin 开发,Kotlin 本身就支持三引号多行字符串,和你之前 Kivy 的使用习惯几乎一致:

val lifecycleDesc = """
    onCreate(): 当Activity首次被创建时由系统调用
    你可以在这里初始化所有UI元素或数据对象
    你还可以获取Activity的savedInstanceState参数,其中包含了之前保存的状态,你可以通过该参数恢复之前的页面状态
""".trimIndent()
findViewById<TextView>(R.id.textView).text = lifecycleDesc

补充说明

TextView 默认就支持多行文本展示,如果需要控制最大行数可以添加 android:maxLines 属性,不需要更换其他文本组件。

内容的提问来源于stack exchange,提问作者Edwin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:24:07