当前位置: 首页 > 知识库问答 >
问题:

根据宽度百分比更改文本视图背景

糜鸿风
2023-03-14

我有一个浅绿色背景的简单文本视图:

<TextView
    android:layout_width="match_parent"
    android:layout_height="20dp"
    android:background="@color/lightgreen"
/>

基本上,我使用这个文本视图作为自定义的“概述/进度栏”。因此,我想改变不同颜色的背景。

例如:

宽度的0%-25%=浅绿色

宽度的25%-66%=黄色

66%-100%的宽度=红色

所以,你可以这样看:

有什么好的解决办法吗?

我尝试过使用不同的Segment ProgressBar库,但是没有一个库可以设置颜色“分隔符”的百分比时间

共有2个答案

田丰
2023-03-14

尝试以下方法

//Get the percentage ProgressBar and then apply the command to the text
float x = LoadingProgress.getProgress() ;
        

if (x > 0.2 && x < 0.6){
                MyTextView.setTextColor(getResources().getColor(R.color.colorGreen));
            }
            else if (x > 0.7)
            {
                MyTextView.setTextColor(getResources().getColor(R.color.colorYellow));
            } else {
                MyTextView.setTextColor(getResources().getColor(R.color.colorRed));
            }

希望这个解决方案能帮助你

赵晨
2023-03-14

您可以使用ClipDrawable来完成此操作。使用进度层列表创建一个图层列表(LayerDrawable),如:

进展。xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <clip android:drawable="@color/red" />
    </item>
    <item>
        <clip android:drawable="@color/yellow" />
    </item>
    <item>
        <clip android:drawable="@color/green" />
    </item>
</layer-list>

并将其用作TextView的背景。

<TextView
    android:id="@+id/progress_text_view"
    android:layout_width="match_parent"
    android:layout_height="20dp"
    android:background="@drawable/progress_bg" />

要应用进度值:

private static final int MAX_LEVEL = 10_000;
private static final float[] LEVELS_PCT = new float[]{.25f, .66f, 1f};
//
final LayerDrawable progressBg = (LayerDrawable) progressTextView.getBackground();
for (int index = 0, count = LEVELS_PCT.length; index < count; index++) {
    progressBg.getDrawable(count - 1 - index)
            .setLevel((int) (MAX_LEVEL * LEVELS_PCT[index]));
}
 类似资料:
  • 我想知道如何更改文本视图的背景,因为我正在从站点解析中提取数据。com,但我不能这样做,我正在尝试这样做。 代码 错误 04-30 11:56:59.156 28388-28691/com。实例ronysueliton。patospizzas E/AndroidRuntime﹕ 致命异常:AsyncTask#2进程:com。实例ronysueliton。patospizzas,PID:28388爪

  • 据我所知,react-本机样式表不支持min-wide/max-wide属性。 我在里面有一个视图和文本。“自动宽度”中的视图不会通过继承文本元素来调整大小。 如何解决这个问题并使用文本宽度自动设置视图宽度? 我的代码是: 在普通的HTML/CSS中我会这样认识到: 注意:父视图上的flex:1对我没有帮助。文本显示为

  • 问题内容: 我已经考虑了以下内容,所以现在我想知道您的意见,可能的解决方案等。 我正在寻找一种插件或技术来更改文本的颜色,或者根据其父​​级背景图像或-color覆盖像素的平均亮度在预定义的图像/图标之间切换。 如果背景覆盖的区域很暗,请将文本设置为白色或切换图标。 此外,如果脚本会注意到父级没有定义的background-color或-image,然后继续搜索最接近的值(从父元素到其父元素),那

  • 我想使用FXML在JavaFX中创建一个包含3列的GridPane。中柱上有一个大标签。中间列采用标签的宽度。左栏和右栏各占表单剩余宽度的一半(50%)。我尝试将百分之五十的宽度设置为左栏和右栏。但是,宽度设置为整个形状的50%,而不是剩余宽度。例如,表单的宽度为1000px。中柱可能需要400px,而左柱和右柱各自需要300px。即使窗体在运行时调整大小,此公式也应保持不变。

  • 问题内容: 使用CSS flex box模型,如何强制图像保持其纵横比? JS小提琴:http://jsfiddle.net/xLc2Le0k/2/ 请注意,图像会拉伸或收缩以填充容器的宽度。很好,但是我们也可以拉伸或缩小 高度 以保持图像比例吗? 的HTML 的CSS 问题答案: 对于img标签,如果您定义一侧,那么将调整另一侧的大小以保持纵横比,并且默认情况下,图像会扩展到其原始大小。 使用此

  • 在 Swift 中使用 ,有人可以帮助我根据标签、图片和描述自动更改单元格的高度吗? 我想随着标签文本的增加动态更改单元格大小。我已经在标签上应用了自动布局。