首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在画布绘制时忽略Android中的高对比度辅助功能选项?

如何在画布绘制时忽略Android中的高对比度辅助功能选项?
EN

Stack Overflow用户
提问于 2019-02-09 04:07:48
回答 2查看 580关注 0票数 5

我有一个自定义视图,我想要有彩色文本。但当启用high contrast选项时,画布会忽略所有画图的颜色设置,并将文本绘制为黑白(drawText重载)

在某种程度上,可以检测此选项是否已启用(通过反射等)。对于某些视图,有没有办法忽略这一点?

PS我知道在设置中的开关,这不是一个解决方案。

EN

回答 2

Stack Overflow用户

发布于 2021-03-31 16:17:10

我的变通方法如下所示:

代码语言:javascript
复制
public void drawTextWithoutHighContrastEffects(Canvas canvas, String text, float x, float y, Paint paint)
{
    if (isHighContrastTextEnabled)
    {
        Path path = new Path();
        paint.getTextPath(text, 0, text.length(), x, y, path);
        canvas.drawPath(path, paint);
    } else {
        canvas.drawText(text, x, y, paint);
    }
}

请注意,这是一个简化的解决方案,例如,不应该为每个绘制操作重新创建path实例,只需创建一次,然后重新使用它。此外,paint对象应正确设置为FILL样式,以使使用drawPath绘制的文本看起来与使用drawText绘制的文本相同。

isHighContrastTextEnabled标志的值来自这里:Detect if 'High contrast' is enabled in Android accessibility settings

票数 1
EN

Stack Overflow用户

发布于 2019-09-14 14:44:52

要强制阻止视图适应辅助功能设置,可以在XML中设置

代码语言:javascript
复制
android:importantForAccessibility="no"

或者您可以在代码中设置

代码语言:javascript
复制
view.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO);

要检测用户是否启用了高对比度文本选项,可以检查此链接(Detect if 'High contrast' is enabled in Android accessibility settings)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54599485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档