java - 为 View 的填充着色

标签 java android view colors padding

假设我有 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/

相关文章:

java - 仅打印 int 数组中的重复项以及它们出现的次数

java - 用于从 xml 模式(反向模式)创建 JAXB java 类的工具?

android - 服务器收到订阅状态更改通知时如何识别用户

android - 如何将短信标记为已读

android - 如何根据当前剩余电池电量估算通话时间、音乐/视频播放时间、空闲时间

java - 如何在 Google Cloud Storage 中获取项目 ID

java - 在 Java 中评估三角函数表达式

iphone - iOS在按钮单击时添加 View

sql - 在 PostgreSQL 中将 2 个 View 合并为一个

Android:View.measure(int,int) 总是想要 (0,0)