如何根据百分比

时间:2016-03-28 06:34:00

标签: android button background-color percentage

我想根据百分比更改按钮的背景颜色。

我得到了20%作为输入 - 它应该显示一个按钮的背景颜色,该按钮由一些颜色填充,让绿色只有20%绿色。

20%我的意思是Button应该只填充其100%的宽度的20%。所以它看起来像Seekbar。但实际上它将是按钮。

40%输入 - 只有40%的背景颜色填充绿色,依此类推。

知道怎么做吗?

注意:请不要告诉您使用Seekbar或Progressbar。

2 个答案:

答案 0 :(得分:3)

使用Button我看到了任何方法。但我之前做过同样的事情。

所以可能会对你有帮助。

<RelativeLayout
        android:id="@+id/relProgress"
        android:layout_width="200dp"
        android:layout_height="35dp"
        android:background="#d7d7d7"
        android:clickable="true"
         >
        <ProgressBar
            android:id="@+id/progressDownload"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_centerVertical="true"
            android:progress="0"
            android:progressDrawable="@drawable/progressbar_style" />

        <Button
            android:id="@+id/txtProgressDownload"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="30%"
            android:background="@android:color/transparent"
            android:textColor="#4d5359"
            android:textSize="15dp" />


</RelativeLayout>

<强> progressbar_style.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:id="@android:id/background">
    <shape>



        <solid android:color="#ccd4e0" />
    </shape>
</item>
<item android:id="@android:id/progress">
    <clip>
        <shape>

            <solid android:color="#6dd451" />
        </shape>
    </clip>
</item>

</layer-list>

以编程方式设置进度条进度

progressDownload.setProgress(20);

答案 1 :(得分:1)

这是我的解决方案,带有cutom视图

public class PrecentageButton extends View {

    private Paint paintDefault;
    private Paint paintFilled;
    private RectF rectDefault;
    private RectF rectFilled;
    private int mWidth;
    private int mHeight;
    private float precentValue=20;

    public PrecentageButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    private void init() {

        paintDefault = new Paint();
        paintDefault.setColor(Color.GRAY);

        paintFilled = new Paint();
        paintFilled.setColor(Color.GREEN);


        rectDefault = new RectF();
        rectFilled = new RectF();


    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        mWidth = getWidth();
        mHeight = getHeight();


        rectDefault.set(10, 10, 200, 100);
        rectFilled.set(10, 10, precentValue, 100);

        canvas.drawRect(rectDefault, paintDefault);
        canvas.drawRect(rectFilled, paintFilled);


    }

    public void setPrecentValue(int precentValue) {
        this.precentValue = precentValue;
        invalidate();
    }
}

<强> OUTUPT

enter image description here