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



相关文章
|
8天前
|
小程序 容器
微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image
本文介绍了微信小程序中常用组件的使用方法,包括view、scroll-view、swiper与swiper-item、text与rich-text、button以及image组件。详细解释了各组件的功能、属性以及如何在小程序页面中进行使用。
微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image
sublime text3如何使用:添加插件
sublime text3如何使用:添加插件
|
5月前
|
小程序 前端开发
【微信小程序】-- 常用的基础内容组件介绍 -- text & rich-text & progress & icon(七)
【微信小程序】-- 常用的基础内容组件介绍 -- text & rich-text & progress & icon(七)
|
Python Windows 容器
Python Tkinter教程(二)——Label控件、Frame控件、Button控件的完整参数和所有方法及详细用法
Python Tkinter教程(二)——Label控件、Frame控件、Button控件的完整参数和所有方法及详细用法
189 0
|
小程序 前端开发 容器
【微信小程序】常用组件基本使用(view/scroll-view/swiper、text/rich-text、button/image)
【微信小程序】常用组件基本使用(view/scroll-view/swiper、text/rich-text、button/image)
215 0
|
C#
C#-ToolTIp和Popup简单使用
很多时候我们需要做一个提示框,来给用户说明这个元素的作用,比如鼠标移动到哪个元素上面,显示一个弹出框并显示这个元素的相关介绍,想到提示内容,我们很容易想到toolip和Popup,接下来就来分别是用一下这两个控件。
231 0
|
开发工具 git
Compose 自定义TextField实现自定义的输入框
Compose 自定义TextField实现自定义的输入框
566 0
Compose 自定义TextField实现自定义的输入框
Sublime Text自定义代码片段Code Snippets
Sublime Text自定义代码片段Code Snippets
268 0
PyQt5 技术篇-设置输入框的placeholder方法,Qt Designer设置Line Edit、Text Edit编辑框的placeholder
PyQt5 技术篇-设置输入框的placeholder方法,Qt Designer设置Line Edit、Text Edit编辑框的placeholder
680 0
PyQt5 技术篇-设置输入框的placeholder方法,Qt Designer设置Line Edit、Text Edit编辑框的placeholder
|
移动开发 JavaScript 前端开发
react-native-easy-app 详解与使用之(三) View,Text,Image,Flatlist
react-native-easy-app 是一款为React Native App快速开发提供基础服务的纯JS库,特别是在从0到1的项目搭建初期,至少可以为开发者减少很多不必要的工作量
980 0
react-native-easy-app 详解与使用之(三) View,Text,Image,Flatlist