为视图的填充着色

时间:2014-05-30 14:22:33

标签: java android view colors padding

说我有视图A,它涵盖了整个屏幕

然后我做

a.setPadding(90, 0, 90, 0)

所以它现在90px下降,90左下

如何为这90个像素着色,比如红色?

如果我使用.setBackgroundColour(int color),它显然会为整个视图着色

那我该怎么办?

如果无法做到这一点,是否有可能只有红色,90像素宽的视图,并覆盖填充区域?但仍允许触摸事件进入填充区域

我需要以编程方式完成所有这些

1 个答案:

答案 0 :(得分:2)

您可以创建在填充区域中绘制颜色的自定义视图。在这里,我将扩展View,但如果您愿意,可以扩展其他内容。

package sample.package.name;

public class ColoredPaddingView extends View {
    Rect rect = new Rect();

    // Constructors omitted. Override them all and call the super constructor

    @Override
    public void onDraw(Canvas canvas) {
        int l = getPaddingLeft();
        int t = getPaddingTop();
        int r = getWidth() - getPaddingRight();
        int b = getHeight() - getPaddingBottom();
        rect.set(l, t, r, b);

        canvas.save();
        canvas.clipRect(rect, Region.Op.DIFFERENCE);
        canvas.drawColor(Color.RED); // or some other color
        canvas.restore;

        super.onDraw(canvas);
    }
}

在布局XML中,您将使用视图的完全限定类名(包括包),如下所示:

<sample.package.name.ColoredPaddingView
     android:layout_width="..."
     android:layout_height="..."
     ... />