android - 如何在撰写 TextField 中绘制平行水平线?
问题描述
我正在尝试使用 Jetpack Compose 构建一个笔记应用程序。我想要一个包含平行水平线的自定义 TextField,就像真正的记事本一样。
我怎样才能做到这一点?
(我知道撰写 Canvas 的基础知识,但不知道如何开始)
解决方案
好的,因为您的问题明确指出您希望知道帮助您绘制平行水平线的方法,因此此实现可能会有所帮助:-
@Preview
@Composable
fun LeafPad() {
val textSize = 25.sp
Box(
Modifier
.fillMaxSize()
.background(Color(0xFFFEFCB5))) {
Canvas(modifier = Modifier.fillMaxSize()) {
var yCord = 0f
repeat(40) {
drawLine(
Color(0xFFB2B461),
Offset(0f, yCord),
Offset(size.width, yCord),
strokeWidth = 2f
)
yCord += 1.8f * textSize.toPx()
}
}
var value by remember { mutableStateOf("") }
TextField(
modifier = Modifier.fillMaxSize(),
value = value,
onValueChange = { value = it },
textStyle = TextStyle(fontSize = textSize, color = Color.Black, lineHeight = (1.8f * textSize.value).sp)
)
}
}
老实说,看看你的用例,你可能想考虑使用分页来代替无限滚动等功能,因为我假设对于文本编辑器,当用户到达页面末尾时你会想要向下滚动,但是当然,这完全取决于您的设计和实现。
推荐阅读
- c# - Xamarin 通过图像获取 ResourceId
- django - 在单独的域上配置一个 django 应用程序并依赖于其他应用程序,并且需要在应用程序之间共享数据
- python - 将整个段落与单词条件匹配的正则表达式是什么?(段落可能包含多个句点/句号)
- android - 用键盘打开片段
- python - 安装 Mysql 时启动 DJango 服务器出错
- c# - 自定义 switch-case 作为 foreach 的替代方案
- reactjs - Next.JS & JEST - publicRuntimeConfig 未定义
- python - 线性回归的极限斜率
- angular - NullInjectorError:没有 HighContrastModeDetector 的提供程序
- r - 如何在R中按顺序有条件地标记行?