技术标签: gradle android Android-compose
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import android.util.Log
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.text.ClickableText
import androidx.compose.foundation.text.selection.DisableSelection
import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.*
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
class Compose_04Activity : ComponentActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
compose_04()
}
}
}
@Composable
fun compose_04(){
Column(modifier = Modifier.padding(10.dp)) {
// 设置字号
Text(text = "我是14sp\n", fontSize = 14.sp)
// 设置颜色
Text(text = "我是红色\n", color = Color.Red)
// 设置粗体
Text(text = "我是粗体\n", fontWeight = FontWeight.Bold)
// 设置剧中对齐
Text(text = "我是居中对齐\n", textAlign = TextAlign.Center, modifier = Modifier.width(150.dp))
// 设置字体类型
Text(text ="我是Serif字体\n", fontFamily = FontFamily.Serif)
// 设置斜体
Text(text ="我是斜体\n", fontStyle = FontStyle.Italic)
// 用SpanStyle设置文字中包含多种样式
Text(
buildAnnotatedString {
withStyle(style = SpanStyle(color = Color.Blue)) {
append("I ")
}
append("am a ")
withStyle(style = SpanStyle(fontWeight = FontWeight.Bold, color = Color.Red)) {
append("handsome boy ")
}
append("Oh yeah!\n")
}
)
// 用ParagraphStyle设置文字中包含多种样式
// ParagraphStyle应用于整个段落,
// 一旦用 ParagraphStyle 标记了一部分文字,
// 该部分就会与其余部分隔开,就像在开头和末尾有换行符一样。
Text(
buildAnnotatedString {
withStyle(style = ParagraphStyle(lineHeight = 30.sp)) {
withStyle(style = SpanStyle(color = Color.Blue)) {
append("床前明月光,")
}
withStyle(
style = SpanStyle(
fontWeight = FontWeight.Bold,
color = Color.Red
)
) {
append("疑是地上霜。举头望明月,")
}
append("低头思故乡。")
}
append("--静夜思\n")
}
)
// 溢出处理
Text("放弃了放弃 ".repeat(50), maxLines = 2, overflow = TextOverflow.Ellipsis)
Text(text = "\n")
// 选择文本
SelectionContainer {
Text("这是可选择的文本")
}
Text(text = "\n")
// 部分不能选择,需要使用DisableSelection包裹
SelectionContainer {
Column {
Text("这是可选择的文本", color = Color.Green)
Text("这是可选择的文本", color = Color.Green)
Text("这是可选择的文本", color = Color.Green)
DisableSelection {
Text("这是不可选择的文本", color = Color.Red)
Text("这是不可选择的文本", color = Color.Red)
}
Text("这是可选择的文本", color = Color.Green)
Text("这是可选择的文本", color = Color.Green)
}
}
// 文本可点击
ClickableText(
text = AnnotatedString("点我啊"),
onClick = { offset ->
Log.d("ClickableText", "$offset -th character is clicked.")
}
)
// 部分文本可点击
val annotatedText = buildAnnotatedString {
append("请点击 ")
// 把这里开始到pop()之前的文字标识为url
pushStringAnnotation(tag = "URL",
annotation = "https://developer.android.com")
withStyle(style = SpanStyle(color = Color.Blue,
fontWeight = FontWeight.Bold)) {
append("Android Developer")
}
pop()
}
ClickableText(
text = annotatedText,
onClick = { offset ->
// 有标识为url的文字
annotatedText.getStringAnnotations(tag = "URL", start = offset,
end = offset)
.firstOrNull()?.let { annotation ->
// If yes, we log its value
Log.d("Clicked URL", annotation.item)
}
}
)
}
}
缺陷: 柱状图数据过于悬殊时, 需要精准点击到柱状图, 体验感差需求: 点击红色框区域都能联动 // 用getZr方法绑定click chart.getZr().on('click', async (params) => { // 无论是否点击到图本身,都能拿到坐标 const pointInPixel = [params.offsetX, params.offsetY] if (chart.containPixel('grid', pointInPixel)) { .
Google Chrome is the most popular browser in the IT world. Google Chrome is provided for different platforms and operating systems like Windows, Linux, Android, iOS, etc. User browsing history is stor...
%s表示的是某一个字符,%c表示的是字符串;注意:字符是用' '括起来的某一个字符,而字符串是用“ ”括起来的一串字符变量。
AppServ是PHP网页架站工具组合包,可以将网络上免费的架站资源重新包装成单一的安装程序。它提供了简易、快速的PHP运行环境的搭建机制,读者只需按照普通应用软件的安装方式就可以完成Apache+MySQL+PHP+phpMyAdmin的安装与配置工作。下面以AppServ-win32-2.5.7为例来介绍AppServ的安装和使用方法。1)双击AppServ-win32-2.5.7.exe文件...
“考博复试八大常见问题”相信是准备参加医学考博的朋友比较关心的事情,为此,医学教育网小编整理内容如下:第 1 问:初试和复试哪个更重要?初试成绩是敲门砖,对最终是否被录取有一定的参考价值,但即使在初试中考出高分也是属于过去,导师还要结合复试成绩来作出最终决定(这个是显而易见的,不然还要复试干嘛)。换言之,初试成绩决定不了录取,对录取的影响有限,但是话又说回来,前提是你要有复试机会!第 2 问:自我...
到底什么时候会尝试Minor GC?新生代填满到90%的时候:同时,说出为什么新生代是 8:1:1比例;最大化的利用新生代空间;触发MinorGC之前会如何检查老年代大小,涉及哪几个步骤和条件?MinorGC之前,发现老年代的可用内存已经小于新生代的全部对象大小,则会看一个参数: -XX:-HandlePromotionFailure是否配置了;如果有则进行下一步尝试,看看老年代的内存大小,是否大于之前每一次MinorGC后进入老年代的对象平均大小;什么时候在Mino...
前言 本文档针对Advinst 13.1英文破解版制作,其他版本操作大同小异,介绍重点为各种常用易用操作,目的为抛砖引玉,利用个人目前为止对该工具的使用心得和经验引导初次使用者快速上手本工具。 基本流程 1. 新建项目 打开Advinst,在左侧菜单中选择New,Project Type选择Installer,最右侧的工程模板中选择Enterprise: 2. 安装包基本信息设置
完成拖拽效果,需要了解几个鼠标坐标:1、clientX:clientY:点击的元素位置相对可视窗口左上角位置2、 layerX:layerY:如果目标元素没有定位 相对页面左上角位置如果目标元素点位,则是相对目标元素左上角3、offsetX:offsetY:相对目标对象的左上角位置4、 pageX:pageY:点击位置相对页面的左上角位置5、movementX:mov...
1.问题P为笛卡尔平面上n>1个点构成的集合,求最近的两个点的距离(n=2k)。简单起见,假设集合中的每个点都不一样。2.解析最近对问题的原理:假设在n个点中,距离最近的两个点,在二维坐标平面中,两点的坐标分别a(x1,y1),b(x2,y2),则两点距离是dist=sqrt((x1-x2)2 + (y1-y2)2)。蛮力算法:将平面内的n个点,进行两两组合,计算出距离,并通过比较得出最小距离,一般当n≤3时,采用该方法进行计算。分治算法:将集合S分成两个大小基本相等的子集S1和S2;递
本文系阅读阅读原章节后总结概括得出。由于需要我进行一定的概括提炼,如有不当之处欢迎读者斧正。如果你对内容有任何疑问,欢迎共同交流讨论。在Swift中,初次接触inout关键字以及它的用法,可能会让我们想起C/C++中的指针,但实际上Swift中inout只不过是按值传递,然后再写回原变量,而不是按引用传递:An in-out parameter has a value that is p...
基于《数据库系统概论》和《数据库系统概念》,阐述了函数依赖和范式及其相关概念、问题和用途,包括平凡与非平凡函数依赖、完全与部分函数依赖、传递函数依赖、码、第一范式、第二范式、第三范式和BC范式
这道题实际上就是一道排序题 看数据量的话用O(n^2)的时间复杂度是过不了的 但是可以采用排好序一次遍历的方法 这样就能节约很多时间#include<bits/stdc++.h>using namespace std;const int MAXN = 100010;int a[MAXN];bool cmp(int a,int b){ return a > b;}int main(void){ freopen("pat0314/in.txt","r",st