我正在开发一个我希望在矩形中显示数量的应用。以下是我的需要。我有2个值,比如totalMoney和spentMoney。 我想在2个颜色的矩形框中显示剩余的钱(即totalMoney - spentMoney)。
像这样:
|======================|
|///////////| |
|////50%////| |
|///////////| |
|======================|
此矩形将与其他组件(如textview等)合作在自定义视图中。
如何在Android中获得此功能?我正在使用Android 2.2。
答案 0 :(得分: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为你绘制它。 Here is an example of that。他们只创建了一个扩展ProgressBar的新视图,并覆盖onDraw,每次都会在画布上绘制一些文本,并绘制条形图和背景。
答案 1 :(得分:0)
最灵活的方法是进行CustomView。
将ImageView用作基类并覆盖 onDraw
onDraw为您提供了一个Canvas,您可以绘制自己喜欢的内容。