- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现评级栏。我指的是https://gist.github.com/vitorprado/0ae4ad60c296aefafba4a157bb165e60但我对此代码一无所知。它有效,但是当我使用这段代码时,星星没有圆角。我想实现如下内容:
最佳答案
我为此制作了非常基本的示例,它将给出创建带有示例边框和填充 png 文件的评级栏的基本想法。
@Composable
private fun RatingBar(
modifier: Modifier = Modifier,
rating: Float,
spaceBetween: Dp = 0.dp
) {
val image = ImageBitmap.imageResource(id = R.drawable.star)
val imageFull = ImageBitmap.imageResource(id = R.drawable.star_full)
val totalCount = 5
val height = LocalDensity.current.run { image.height.toDp() }
val width = LocalDensity.current.run { image.width.toDp() }
val space = LocalDensity.current.run { spaceBetween.toPx() }
val totalWidth = width * totalCount + spaceBetween * (totalCount - 1)
Box(
modifier
.width(totalWidth)
.height(height)
.drawBehind {
drawRating(rating, image, imageFull, space)
})
}
private fun DrawScope.drawRating(
rating: Float,
image: ImageBitmap,
imageFull: ImageBitmap,
space: Float
) {
val totalCount = 5
val imageWidth = image.width.toFloat()
val imageHeight = size.height
val reminder = rating - rating.toInt()
val ratingInt = (rating - reminder).toInt()
for (i in 0 until totalCount) {
val start = imageWidth * i + space * i
drawImage(
image = image,
topLeft = Offset(start, 0f)
)
}
drawWithLayer {
for (i in 0 until totalCount) {
val start = imageWidth * i + space * i
// Destination
drawImage(
image = imageFull,
topLeft = Offset(start, 0f)
)
}
val end = imageWidth * totalCount + space * (totalCount - 1)
val start = rating * imageWidth + ratingInt * space
val size = end - start
// Source
drawRect(
Color.Transparent,
topLeft = Offset(start, 0f),
size = Size(size, height = imageHeight),
blendMode = BlendMode.SrcIn
)
}
}
private fun DrawScope.drawWithLayer(block: DrawScope.() -> Unit) {
with(drawContext.canvas.nativeCanvas) {
val checkPoint = saveLayer(null, null)
block()
restoreToCount(checkPoint)
}
}
用法
Column {
RatingBar(rating = 3.7f, spaceBetween = 3.dp)
RatingBar(rating = 2.5f, spaceBetween = 2.dp)
RatingBar(rating = 4.5f, spaceBetween = 2.dp)
RatingBar(rating = 1.3f, spaceBetween = 4.dp)
}
结果
还创建了一个使用手势、其他 png 文件和矢量作为评级项目的库可用 here .
RatingBar(
rating = rating,
space = 2.dp,
imageBackground = imageBackground,
imageForeground = imageForeground,
animationEnabled = false,
gestureEnabled = true,
itemSize = 60.dp
) {
rating = it
}
关于android - Jetpack 撰写 : How to create a rating bar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73948960/
我对这个框架完全陌生。浏览所有文档后,我已经使用 visual studio 和类型脚本成功配置了 Aurelia 框架。我想知道如何在另一个 View 中组合一个 View ,并从其父 View 初
我有一个包含Nginx,php,redis和专用于SSH隧道的容器的Docker Compose文件。 我的Mac上有一个ssh配置文件,该文件可以在运行ssh my-tunnel时按预期工作,并且通
当我运行 docker-compose up 时,我得到这个错误: root@ubuntu:/home/benson/Docker/HaproxyMy# docker-compose up Recre
我有一个对话框,当我按下按钮时我无法关闭这是我的代码,我相信这是用于 if 循环的,但在那种情况下我需要它来实现它,有什么想法可以帮助我吗? @Composable fun PopupWind
我想在 Jetpack Compose 中创建曲线文本,就像在“Material You”中一样。但是怎么办?例子: 最佳答案 您可以使用 Canvas 来做到这一点。 Compose 本身没有绘制弯
我想选择我的 LazyColumn 中的一项并更改文本颜色。 如何识别选择了哪个项目? 代码: val items = listOf(Pair("A", 1), Pair("AA", 144), Pa
我很难确定我的问题是 Jetpack Compose 缺少功能还是我找不到它是如何完成的。 假设我想做这个页面 它需要可滚动,因为内容很长。 我还想使用惰性列来加载图像中显示的用户列表。 问题是您不能
我正在尝试在节点应用程序的 docker 容器内运行 webpack。我收到以下错误。 sh: 1: webpack: Permission denied Dockerfile 在正常构建上运行良好。
我有一个 React 应用程序,它也使用 Recompose和Redux . 它们都有一个内容非常相似的 compose 函数: Compose from Redux Compose from Rec
docker -ps -a CONTAINER ID IMAGE COMMAND CREATED S
在 javascript 世界中,这两种模式有什么区别吗? a(b)(c)(f) a(b(c(f))) 它们在功能上是相同的,并且都增加了调用堆栈的长度。 似乎组合模式(#1)更受欢迎,想知道我们有什
我怎样才能实现以下外观,其中有一个标题,然后是分隔线和一个用于输入正文的区域。看起来好像它几乎是一个 UITextView 最佳答案 很简单,他们使用两个字段。第一个是 UITextfield,允许您
我正在尝试查看是否有任何方法可以从网站(html/javascript)调用/启动 Outlook 撰写。此外,它还需要使用模板。 例如:我单击网页上的按钮,它将启动 Outlook 撰写邮件窗口,并
我有一个带有嵌套 LazyRows 的 LazyColumn(类似于 Netflix 或 Spotify 主页提要)。简而言之,我遇到的问题是当页面内容更改时,嵌套 LazyRow 的滚动位置不会重置
我需要为整个应用程序设置背景颜色。在 xml 中,我们使用 android:background在 fragment 或 Activity 中标记。 Compose 有什么模拟功能? Surface
在我的 fragment 中使用 Compose 时出现此错误,在 XML 的情况下可以正常工作ViewTreeLifecycleOwner not found from androidx.fragm
我正在尝试测试 Text在我的组件上我可以用不同的颜色打印它,所以在我的测试中我正在验证它是否获得了预期的颜色。我正在寻找一种返回颜色的方法,但我没有找到任何方法。 从现在开始,我断言文本是正确的并且
我正在尝试使用 Slick 3.0 编写查询,但似乎无法弄清楚。 等效的 SQL 是“insert into SavedMail select * from Inbox where Inbox.id
我使用 docker-compose,我使用 env 文件和我的局部变量。 我需要传递数组变量。 我试过了: TAGS="12345","67890" 或者 TAGS=["12345","67890"
我想将python集成到dotnet核心镜像中,因为我需要执行python脚本。 当我执行此DockerFile时,会创建许多悬空图像。 Dangling Images 另外,有没有适当的方法来集成p
我是一名优秀的程序员,十分优秀!