Android 如何设置部分背景色

Android 如何设置部分背景色,android,view,draw,android-canvas,background-color,Android,View,Draw,Android Canvas,Background Color,我有一个实现视图的类 **DrawView.class** public class DrawView extends View { Paint paint = new Paint(); public DrawView(Context context, AttributeSet attrs){ super(context, attrs); } 和myfile.xml <com.example.sliding.DrawView

我有一个实现视图的类

**DrawView.class**
     public class DrawView extends View {
    Paint paint = new Paint();

 public DrawView(Context context, AttributeSet attrs){
    super(context, attrs);
 }
和myfile.xml

      <com.example.sliding.DrawView 
        android:id="@+id/tv_listRow_item1"
    android:tag="tv_listRow_item1_1"
    android:layout_height="0dip"
    android:layout_width="fill_parent"
    android:layout_weight="1"
    android:gravity="center"
    android:width="100dip"
    android:height="30dip"
    android:background="@drawable/textview_listrow_border"/>

此视图有30个倾斜高度如何才能仅对30%的30%进行着色? 谁能给我举个例子?
感谢您的时间和帮助。

我不完全确定这是否可行,但您可以制作一个颜色为30%、透明度为70%的9面片,然后以适当的百分比定义两个可拉伸区域(每个区域一个)。当9个补丁被拉伸时,它们应该尊重多个拉伸区域的比率,所以我认为这是可行的


一种方法是使用LayerDrawable

但这只有在视图的高度固定为80dp时才起作用

在可绘图文件夹中创建xml文件。

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <solid android:color="#FFFFFFFF" /> </shape> </item> <item android:top="10dp"> <shape > <solid android:color="#FF000000"/> </shape> </item> <item android:top="60dp"> <shape> <solid android:color="#FFFFFFFF"/> </shape> </item> </layer-list>
并将其设置为视图的背景。我需要一个具有2个参数的函数。这首先表示颜色的开始。第二个表示结束。高度=80dp。例如,第一个参数是20,第二个参数是30。此间隔内的像素具有颜色

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <solid android:color="#FFFFFFFF" /> </shape> </item> <item android:top="10dp"> <shape > <solid android:color="#FF000000"/> </shape> </item> <item android:top="60dp"> <shape> <solid android:color="#FFFFFFFF"/> </shape> </item> </layer-list>

我想最简单的方法是重写onDraw(Canvas Canvas)函数并绘制一个这样的矩形

    double mStart = -1;
    double mEnd = -1;

    public void addRectangle( double startInPercent, double endInPercent ) {
        if( startInPercent < 0 || endInPercent > 1 || endInPercent > startInPercent )
            return;

        mStart = startInPercent;
        mEnd = endInPercent;

        //this will make the view to refresh the UI
        invalidate();
    }

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

        if( mStart >= 0 && mEnd >= 0)
            canvas.drawRect(0, getHeight() * mStart, getWidth(), getHeight() * mEnd, mPaint);
    }
当然,这是可能的最愚蠢的代码,您可以围绕这2个概念玩,基本上得到您想要的

完成此操作的主要类(以及Andorid UI中的几乎所有内容)是:


你的意思是,最上面的70%将是透明的,其余的30%将填充一些颜色?你好,库马尔。谢谢你的回复。这景色有80度的倾斜高度。我只需要一些颜色。例如,第一个10度是透明的,50度是黑色的,剩下的20度是透明的…这是一个例子…高度80度是固定的?是的。每个视图都有80个倾斜。我需要知道如何只给我指定的几个倾斜点上色,而不是给80倾斜点上色。或者…有可能在这个视图中画一个矩形?一个有颜色的长方形……但这种方式是固定的。我需要一种方法,在这里我有一个整数,它是用一种新颜色处理的dp数。我仍然不知道你的问题到底是什么。如果你能解释得更清楚一些,可能是通过一些图片,我们可能会有一个更好的解决方案。有可能在我画的视图中膨胀这个矩形吗?嗯,老实说,我不知道你说的“膨胀”视图中的矩形是什么意思。如果您想在xml文件中定义矩形,我认为您不能(可以,但必须定义xml标准和解析器)。您可以确定的是定义一个具有2个参数的方法。我将编辑answear以向您显示代码。