说我有视图A,它涵盖了整个屏幕
然后我做
a.setPadding(90, 0, 90, 0)
所以它现在90px下降,90左下
如何为这90个像素着色,比如红色?
如果我使用.setBackgroundColour(int color),它显然会为整个视图着色
那我该怎么办?
如果无法做到这一点,是否有可能只有红色,90像素宽的视图,并覆盖填充区域?但仍允许触摸事件进入填充区域
我需要以编程方式完成所有这些
答案 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="..."
... />