【问题标题】:Android - Change only the alpha TextView's textAndroid - 仅更改 alpha TextView 的文本
【发布时间】:2013-08-06 06:06:19
【问题描述】:

假设我有这个代码:

int color = tv.getCurrentTextColor();

如何仅更改此颜色的 Alpha?

例如:

如果颜色是0x00ffffff,我将如何将其更改为0xffffffff

有没有一种方法或者我需要做一些十六进制/整数操作?

【问题讨论】:

    标签: android colors textview alpha


    【解决方案1】:

    嗯,直接回答你的问题 “如果颜色是 0x00ffffff,我将如何将其更改为 0xffffffff?” 以简单地使用复合位或: color |= 0xff000000;.

    但我想可能有些同事宁愿你不要在 Android 开发的 java 端做这种事情:你有一个很棒的帮助类,叫做graphics.Colorprovided by Android!它在下面做同样的事情,但确实有助于您的代码可读性,特别是考虑到 android 中的 int 类型颜色不一定是十六进制颜色值,但也可能指向 @ 中资源的 artbirary id 987654326@xml。啊。

    例如:

    int color = tv.getCurrentTextColor();
    int newColor = Color.argb(yourNewAlphaVal, Color.red(color), Color.green(color), Color.blue(color))
    

    不快,但我猜你不需要它。

    当然,这是关于此处使用什么的个人意见,希望对您有所帮助!

    【讨论】:

    • 我已经查看了graphics.Color。没有设置Alpha的方法。只为获得Alpha。
    • 添加 API 级别 1:developer.android.com/reference/android/graphics/…, int, int, int)
    • 真的希望这会有所帮助。您不能设置颜色值的原因是它是intints 不能在 java 中设置 - 你必须创建一个新的。这就是为什么助手只是一个静态负载。
    • 抱歉废了“创建”。解释得太糟糕了。您不会“创建”整数。我的意思是ints 是java中的原始数据类型,所以当使用int 来表示一个复杂的概念时,比如颜色,你不要通过引用修改API,因为当然,整数不能设置,这就是您正确地说的“没有设置Alpha的方法”的原因。为此,您需要一个包装 int 的 Color 对象,而这恰好不是我们所采用的方式。
    • 哦,我错过了 Color.[color](color) 方法。这就是我需要的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2019-04-13
    • 2015-07-05
    相关资源
    最近更新 更多