Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >来自柯特林的GradientDrawable的GetColor

来自柯特林的GradientDrawable的GetColor
EN

Stack Overflow用户
提问于 2020-05-11 22:48:57
回答 1查看 289关注 0票数 0

我已经像这样通过编程设置了一个GradientDrawable背景,并尝试测试它的颜色。主要问题似乎是在测试时从形状(GradientDrawable)获取颜色。

此代码片段来自较大的绑定适配器。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
color = ContextCompat.getColor(
    textView.context, R.color.ColorRatingHigh
)

val shape = GradientDrawable()
shape.shape = GradientDrawable.OVAL
shape.setColor(color)
shape.setStroke(2, Color.BLACK)
textView.setBackground(shape)

测试是这样设置的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Test
fun MovieDetailRatingColorTest() {
    ...

    onView(withId(R.id.movie_vote_average))
        .check(matches(withBackgroundColor(R.color.ColorRatingHigh)))
}
...

fun withBackgroundColor(expectedColor: Int): Matcher<View?>? {
    Checks.checkNotNull(expectedColor)
    return object : BoundedMatcher<View?, TextView>(TextView::class.java) {
        override fun matchesSafely(textView: TextView): Boolean {

            val actualColor = (textView.getBackground() as ColorDrawable).color
            return expectedColor == actualColor
        }

        override fun describeTo(description: Description) {
            description.appendText("with background color: ")
        }
    }
}

不幸的是,我得到了以下ClassCastException

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
android.graphics.drawable.GradientDrawable cannot be cast to android.graphics.drawable.ColorDrawable

我在网站上看到了一些关于类似问题的帖子,

但是似乎没有一个是有效的,并且大多数都以同样的问题结束。例如Testing background color espresso Android

或者答案似乎过时了,或者受到java到kotlin转换的影响..例如how to get the color from GradientDrawable

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-12 12:28:56

我想出了一个解决办法,使用片段方案来访问“ContextCompat”。

这允许我检索'R.color‘目录。getColor检索最初传入的colorId的2的补码...它恰好与这里检索到的id相匹配:val actualColor = (textView.getBackground() as ColorDrawable).color.defaultColor

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
lateinit var scenario: FragmentScenario<MovieDetailFragment>
...

@Test
fun MovieDetailRatingColorTest() {
    var expectedColor: Int? = 0

    scenario.onFragment { fragment ->
            expectedColor =
                fragment.context?.let {
                    ContextCompat.getColor(it, R.color.ColorRatingHigh )
                }
    }

    onView(withId(R.id.movie_vote_average))
        .check(matches(withBackgroundColor(expectedColor)))
}

然后,我编辑了withBackground()函数以匹配新输入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fun withBackgroundColor(expectedColor: Int?): Matcher<View?>? {
    Checks.checkNotNull(expectedColor)
    return object : BoundedMatcher<View?, TextView>(TextView::class.java) {
        override fun matchesSafely(textView: TextView): Boolean {

            val actualColor = (textView.getBackground() as GradientDrawable).color?.defaultColor
            return expectedColor == actualColor
        }

        override fun describeTo(description: Description) {
            description.appendText("with background color: $expectedColor")
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61740752

复制
相关文章
NYOJ——————数的长度(斯特林公式的应用)
数的长度 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述     N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出N!的位数有多少(十进制)? 输入首行输入n,表示有多少组测试数据(n<10) 随后n行每行输入一组测试数据 N( 0 < N < 1000000 )输出对于每个数N,输出N!的(十进制)位数。样例输入 3 1 3 32000 样例输出 1 1 130271 来源ACM教程上传者rooot     此题
Gxjun
2018/03/21
7570
'getColor(int)' is deprecated ,getColor过时
'getColor(int)' 在API 23(6.0)已经过时了 6.0之后使用: ContextCompat.getColor(context, R.color.color_name) 例如: textView.setTextColor(ContextCompat.getColor(this, R.color.colorPrimary)); 源码: @ColorInt public static final int getColor(Context context, @ColorRes in
yechaoa
2022/06/10
7170
'getColor(int)' is deprecated ,getColor过时
数值积分|牛顿-柯特斯公式
牛顿-柯特斯公式的缺点:对于次数较高的多项式而有很大误差(龙格现象),一般取低阶公式计算。
fem178
2020/05/27
4.2K0
Android 进度条按钮实现(ProgressButton)
有些App在点击下载按钮的时候,可以在按钮上显示进度,我们可以通过继承原生Button,重写onDraw来实现带进度条的按钮。
用户1289394
2021/07/30
1.9K0
Android Kotlin/Java 动态设置 shape/drawable 等状态效果
和尚我最近遇到一个小需求,程序里面有个别页面,需要动态的调整某个页面的样式,包括一键变灰等效果。 以前页面是用 shape 和 drawable 之类实现的效果。现在需要用 Kotlin/Java 代码实现动态修改。由于和尚我技术浅浅,仅整理一下遇到一些坑。
阿策小和尚
2019/08/12
2K0
Android Kotlin/Java 动态设置 shape/drawable 等状态效果
Android 通过 xml 和 Java 两种方式调整 EditText 光标样式
和尚我有个小需求是根据主题配色更改 EditText 中输入框光标的颜色,网上查了一些资料,大部分都是直接用的 xml 方式在做调整,但是和尚我需要的是在 Java 代码中动态调整光标颜色。 虽然是一个很简单的东西,但是和尚我在测试中还是遇到了不少的小问题,现在简单整理一下,希望对于遇到相同问题的朋友有所帮助。
阿策小和尚
2019/08/12
3.7K0
Android 通过 xml 和 Java 两种方式调整 EditText 光标样式
分享一个chrome扩展 - 柯林斯划词翻译 + 扇贝生词库
本文介绍了一款名为柯林斯划词翻译的chrome扩展,它能够协助用户快速在网页中查询并翻译单词。该扩展还支持将查询到的单词添加到扇贝生词本中,以便用户更方便地进行学习。
IMWeb前端团队
2017/12/29
1.3K0
分享一个chrome扩展 - 柯林斯划词翻译 + 扇贝生词库
Android - 圆形 Button 与倒计时控件
前言 平时咱们开发 Button 是很常见的控件,它总是以各种形式出现。例如:加边框,边框颜色,各种圆角。以至于我们不得不写 n 个 shape 文件去维护。这样总是很麻烦,还很容易忘记更改某些文件。
code_horse
2018/07/02
7860
Android 动态修改shape
一般修改背景颜色直接set就行了, 当然如果背景是一个shape的话,直接set一个shape也行,如果不怕麻烦的话 但是在页面滑动的时候就需要动态的去修改shape的颜色了 GradientDrawable mDrawable = (GradientDrawable)mImageView.getBackground(); mDrawable.setColor(ContextCompat.getColor(MainActivity.this,R.color.colorPr
yechaoa
2022/06/10
5600
Android 动态修改shape
分享一个chrome扩展 - 柯林斯划词翻译 + 扇贝生词库
我在自己阅读英文文章、并从有道词典查询单词的过程中发现,相比于两三个中文字的单词意思解释,柯林斯词典提供了一定的英文语境可以帮我 更准确地 理解一个单词的意思,并加深记忆,我渐渐地也就变得只看柯林斯的解释。加之在 chrome store 上并没有搜到太多 collins 词典的扩展( FairyDict 支持),于是便有了这个应用。
IMWeb前端团队
2019/12/04
1.5K0
Android常见问题剖析
一、 Edittext编辑完成后让键盘的“完成”变成“搜索”样式 1.先设置属性Android:singleline =“true” 2.再设置Android:imeOptions=“actionSearch” 二、 ArrayList去除重复数据 private ArrayList singleElement(ArrayList dateCount) { ArrayList newAl = new ArrayList(); for(Iterator it = dat
先知先觉
2019/01/21
3820
Android 图解创建外部 lib 库及自定义 View
随着插件化/组件化的快速发展,现在大部分的项目开发中都会提取公共的代码制作成 Library module,根据具体的业务需求进行拆分。和尚也学习一下如何拆分 lib 包,实际操作很简单,整理一下操作步骤。
阿策小和尚
2019/08/12
5770
Android 图解创建外部 lib 库及自定义 View
类筛法与第一类斯特林数?这次的周赛有点东西!
分割字符串,把字符串和索引合成一个 pair<string, int>,放在容器 vector 里面进行排序,最后合成答案即可
ACM算法日常
2021/06/16
5790
8968 万、田东县“智慧公安”:广西广电、易柯森特中标
2022年3月30日,田东县发布《“智慧公安”建设项目》招标公告,预算 89788900 元。 2022年4月21日发布中标结果公告,广西广播电视信息网络股份有限公司、北京易柯森特科技有限公司 8968 万元中标。 中标金额:人民币捌仟玖佰陆拾捌万元整
云头条
2022/04/24
2810
drawable用Kotlin应该这样写
通常我们在res/drawable下面自定义shape和selector来满足一些UI的设计,但是由于xml最终转换为drawable需要经过IO或反射创建,会有一些性能损耗,另外随着项目的增大和模块化等,很多通用的样式并不能快速复用,需要合理的项目资源管理规范才能实施。那么通过代码直接创建这些drawable,可以在一定程度上降低这些副作用。本篇介绍用kotlin DSL简洁的语法特性来实现常见的drawable.
Rouse
2021/05/28
9460
drawable用Kotlin应该这样写
Javascript中的柯里化
柯里化,是函数式编程的一个重要概念。对于没接触过的人来说,会被一串串的小括号弄得摸不着头脑。但一旦理解了其中的含义和具体的使用场景,你一定会对它爱不释手。它既能减少代码冗余,也能增加可读性,可谓程序猿居家旅行,装逼撕逼必备之良药。
Dickensl
2022/06/14
2570
点击加载更多

相似问题

HTML5上传文件

10

HTML5 -限制文件上传

37

Ajax文件上传(HTML5)

22

HTML5 AJAX多文件上传

12

上传多个文件HTML5 / PHP

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文