0

我正在开发一个要在矩形中显示数量的应用程序。以下是我需要的。我有 2 个值,比如 totalMoney 和 usedMoney。我想在 2 种颜色的矩形框中显示剩余的钱(即 totalMoney - 花的钱)。

像这样:

|======================| 
|///////////|          |
|////50%////|          |   
|///////////|          |
|======================|

这个矩形将在自定义视图中,与其他组件(如 textview 等)协作。

我如何在 Android 中获得这个?我正在使用 Android 2.2。

4

2 回答 2

1

你需要一个ProgressBar

这是一个自定义示例。

    <ProgressBar style="?android:attr/progressBarStyleHorizontal"
      android:layout_width="fill_parent"
   android:layout_height="7dip"
  android:id="@+id/pop1000Bar"
  android:max="1000"
  android:progress="500"
  android:progressDrawable="@drawable/progressbarlayers"
  >
  </ProgressBar>

progressbarlayers 是一个 xml 文件,它定义了我希望进度条的外观。这是我的设置方式。

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@android:id/background">
    <shape>
        <corners android:radius="5dip" />
        <gradient
                android:startColor="#ff9d9e9d"
                android:centerColor="#ff5a5d5a"
                android:centerY="0.75"
                android:endColor="#ff747674"
                android:angle="270"
        />
    </shape>
</item>

<item
    android:id="@android:id/progress"
>
    <clip>
        <shape>
            <corners
                android:radius="5dip" />
            <gradient
                android:startColor="#A9F505"
                android:endColor="#FFF700"
                android:angle="270" />
        </shape>
    </clip>
</item>

<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
        <size android:height="3dip"/>



            <gradient
                    android:startColor="#80ffd300"
                    android:centerColor="#80ffb600"
                    android:centerY="0.75"
                    android:endColor="#a0ffcb00"
                    android:angle="270"
            />
        </shape>
    </clip>
</item>
<item
    android:id="@android:id/progress"
>
    <clip>
        <shape>
            <corners
                android:radius="5dip" />
            <gradient
                android:startColor="#A9F505"
                android:endColor="#FFF700"
                android:angle="270" />
        </shape>
    </clip>
</item>

</layer-list>

它看起来像这样:

在此处输入图像描述

但是你可以让它看起来像你需要的任何东西。

编辑:有很多方法可以让你获得文字。如果您的父布局是RelativeLayout,您可以在进度条顶部堆叠一个TextView,并在每次更新进度时在文本视图上调用setText。可能更好的方法是子类 ProgressBar 为您绘制它。这是一个例子。他们只是创建了一个扩展 ProgressBar 的新视图,并覆盖 onDraw 以每次在画布上绘制一些文本以及绘制条形图和背景。

于 2012-05-05T12:49:18.113 回答
0

最灵活的方法是做一个CustomView。

使用 ImageView 作为基类并覆盖onDraw

onDraw 给你一个画布,你可以画你喜欢的东西。

于 2012-05-05T14:09:29.950 回答