compose Text和TextField简单使用

简介: compose Text和TextField简单使用

Text


任何前端框架对文字的处理都是最重要的,Compose中文字的展示和文字的编辑分别使用的Text控件和TextField控件实现。


Text使用


简单使用

  1. 代码
@Composable
fun SimpleText() {
  Text("Hello World")
}
复制代码
  1. 效果

image.png


修改文字样式

  1. 代码
Text(
        text = "Hello $name!",
        color = Color.Green,//文字颜色
        fontSize = 40.sp,//文字字体大小
        fontStyle = FontStyle.Italic,//斜体
        fontWeight = FontWeight.Bold,//文字加粗
        modifier = Modifier.fillMaxSize(1f)
    )
复制代码
  1. 效果

image.png


实现一段文字中添加多样式

Compose中使用AnnotatedString可以在同一段文字中添加多种样式。

  1. 代码
fun Greeting2(name: String) {
    Text(text = buildAnnotatedString {
        withStyle(style = SpanStyle(color = Color.Red, fontSize = 20.sp)) {// SpanStyle类似于Span标签,是行内元素
            append("公众号:")
        }
        withStyle(style = SpanStyle(color = Color.Green, fontSize = 20.sp)) {
            append("安安安安卓")
        }
        withStyle(style = ParagraphStyle()) {//类似p标签独占一行
            withStyle(style = SpanStyle(color = Color.Cyan, fontSize = 20.sp)) {//ParagraphStyle不能设置颜色,所以这里要再套一层Style
                append("重要的事另起一行说:因为说实话,我只是个菜鸟")
            }
        }
    })
}
复制代码
  1. 效果

image.png


本例中做了这样一个事情:

第一行显示两种样式的文字,这需要两个SpanStyle,因为SpanStyle是行内元素,所以两者会水平排列。

后面的文字我们认为比较重要,所以我们需要独占一行,因为ParagraphStyle是块元素,所以轻松实现独占一行的效果。


选择文字

要启用文字选择,需要使用 SelectionContainer

这属于比较偏僻的知识了,不展开讲,有个印象就行。


TextField

TextField(
            value = text.value,
            onValueChange = {
                text.value = it
                Log.e("tag", it)
            },
            modifier = Modifier
                .fillMaxWidth(0.8f),
            label = { Text(text = "哈哈") },
            colors = TextFieldDefaults.textFieldColors(
                textColor = Color.Red,//文字颜色
                backgroundColor = Color.Green,//背景颜色
                cursorColor = Color.Cyan,//光标颜色
            )
        )
复制代码

效果:

image.png


OutLineTextField

OutlinedTextField(
            value = text.value, onValueChange = {
                text.value = it
            },
            label = { Text(text = "哈哈") },
            colors = TextFieldDefaults.textFieldColors(
                textColor = Color.Red,
                backgroundColor = Color.Green,
                cursorColor = Color.Cyan,
                focusedIndicatorColor = Color.Transparent//获取焦点时候边框的颜色
                )
        )
复制代码

效果:

image.png


首发后补充


TextField状态保存

当我们使用remember保存TextField状态的时候,如果当前页面被覆盖后再次返回TextField中的数据会被清空,

var userName by remember {
    mutableStateOf("")
}
复制代码


如果想不被清空需要使用rememberSaveable

var userName by rememberSaveable {
    mutableStateOf("")
}
复制代码


TextField重要属性

输入模式
visualTransformation//默认:VisualTransformation.None;密码输入:PasswordVisualTransformation()
复制代码


自定义TextField(20220404)

# Compose 自定义TextField实现自定义的输入框


Text如何设置超出字数省略号展示

代码如下,使用overflow进行设置,注意一定要设置maxLines才能进行省略号展示

Text(
    text = "安安安安卓,一个专注传不android知识的螺丝钉,欢迎关注公众号:安安安安卓",
    overflow = TextOverflow.Ellipsis,
    maxLines = 2,
    style = TextStyle(fontSize = 30.sp)
)
复制代码


overflow还有另外两个枚举:

TextOverFlow.Clip
TextOverFlow.Visible
复制代码


Compose更改输入框键盘回车键行为的方式 (20220404)

代码

关键就是下面的三个属性: 其中keyboardOption用来设置输入的内容类型和返回键展示的样式keyboardActions用来展示回车键被点击相应的行为后的回调方法singleLine=true尤其要设置单行为true,否则回车键的行为图标不会发生改变

singleLine = true, keyboardOptions = KeyboardOptions(
    keyboardType = KeyboardType.Text,
    imeAction = actionData.imeAction
), keyboardActions = KeyboardActions(
    onDone = {
        showToast("onDone")
    },
    onGo = {
        showToast("onGo")
    },
    onNext = {
        showToast("onNext")
    },
    onPrevious = {
        showToast("onPrevious")
    },
    onSearch = {
        showToast("onSearch")
    },
    onSend = {
        showToast("onSend")
    }
)
复制代码

github.com/ananananzhu…

实现效果

image.png



相关文章
sublime text3 快速生成方法注释
sublime text3 快速生成方法注释
139 0
|
1月前
|
小程序 前端开发 JavaScript
小程序入门之认识view和text组件
小程序入门之认识view和text组件
43 0
sublime text3如何使用:添加插件
sublime text3如何使用:添加插件
|
6月前
Text文本框简单实例
Text文本框简单实例
60 1
|
小程序 前端开发 容器
【微信小程序】常用组件基本使用(view/scroll-view/swiper、text/rich-text、button/image)
【微信小程序】常用组件基本使用(view/scroll-view/swiper、text/rich-text、button/image)
229 0
|
IDE Java 编译器
Sublime Text安装与配置教程
Sublime Text是我一直使用的代码编辑器,我喜爱它的原因就是好看啊!当然打开速度毋庸置疑啦,毕竟不是IDE。这里我把我的安装与配置步骤教给大家,如有未尽之处,大家自己摸索咯,也欢迎与我交流。
888 0
Sublime Text安装与配置教程
|
开发工具 git
Compose 自定义TextField实现自定义的输入框
Compose 自定义TextField实现自定义的输入框
579 0
Compose 自定义TextField实现自定义的输入框
Sublime Text自定义代码片段Code Snippets
Sublime Text自定义代码片段Code Snippets
279 0
PyQt5 技术篇-设置输入框的placeholder方法,Qt Designer设置Line Edit、Text Edit编辑框的placeholder
PyQt5 技术篇-设置输入框的placeholder方法,Qt Designer设置Line Edit、Text Edit编辑框的placeholder
689 0
PyQt5 技术篇-设置输入框的placeholder方法,Qt Designer设置Line Edit、Text Edit编辑框的placeholder