假设我有 View A,它覆盖了整个屏幕
然后我做
a.setPadding(90, 0, 90, 0)
所以它现在向下 90 像素,向左 90
我怎样才能给这 90 个像素上色,比如红色?
如果我使用 .setBackgroundColour(int colour) 它显然会为整个 View 着色
所以我该怎么做?
如果这是不可能的,是否有可能有一个只有红色、90 像素宽并覆盖该填充区域的 View ?但仍然允许触摸事件通过填充区域
我需要以编程方式完成所有这些
最佳答案
您可以创建一个在填充区域中绘制颜色的自定义 View 。我在这里扩展 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 中,您将使用 View (包括包)的完全限定类名,如下所示:
<sample.package.name.ColoredPaddingView
android:layout_width="..."
android:layout_height="..."
... />
关于java - 为 View 的填充着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23956876/