android - TextView 作为带有文本颜色操作的进度条?

标签 android android-layout user-interface animation android-progressbar

我正在努力改进我的应用程序的用户界面。 在我使用的设计中,我有一个 TextView,它将在特定时间充当进度条。 ruslt 应该是这样的:

enter image description here

问题是,随着进度的变化,部分文本会改变颜色

我在 android 中查看了 spannablestring,如果我能找到进度涵盖的字母,它会起作用(但我认为这不会容易/准确)

我现在打算做的是使用以下内容:

  • 框架布局:
  • 具有绿色文本和白色背景的背景 textView。
  • 在前进时改变宽度的前端线性布局。
  • 具有与框架布局宽度匹配的绿色背景和白色文本的 TextView。

有没有更好的方法?

最佳答案

更好的方法是要求您覆盖 TextView 类。您可以使用裁剪来拆分 TextView 并绘制不同颜色的两个部分。

TextView tv = new TextView(this){
    @Override
    public void draw(Canvas canvas) {
        int color1 = Color.WHITE;
        int color2 = Color.GREEN;

        canvas.save();
        setTextColor(color1);
        setBackgroundColor(color2);
        canvas.clipRect(new Rect(0, 0, (int)(getWidth() * percent), getHeight()));
        super.draw(canvas);
        canvas.restore();

        canvas.save();
        setTextColor(color2);
        setBackgroundColor(color1);
        canvas.clipRect(new Rect((int)(getWidth() * percent), 0, getWidth(), getHeight()));
        super.draw(canvas);
        canvas.restore();
    }  
};

我希望你明白这一点

关于android - TextView 作为带有文本颜色操作的进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14977626/

相关文章:

java - 如何使用android解密php加密的字符串?

android - setBackgroundColor 方法,安卓

android - 单击按钮后如何创建菜单组?

c# - 在BackgroundWorker的DoWork方法中引发附加事件

eclipse - 如何在 Eclipse 中将默认搜索模式更改为 "File Search"?

c++ - Windows 7 图形用户界面引用

android - 没有 Android 支持库的带指示器的 ViewPager

Android 布局 - 不同屏幕分辨率和相同密度的图像

Android MediaPlayer.stop() 暂停而不是停止

未调用 Android MotionLayout 转换监听器