java - 为 View 的填充着色

标签 java android view colors padding

假设我有 View A,它覆盖了整个屏幕

然后我就这么做了

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

现在向下 90 像素,向左 90 像素

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

如果我使用 .setBackgroundColour(int color) ,显然它会给整个 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/

相关文章:

php - 查看或不查看

mysql - 为什么在使用 "merge"等构造时不能使用 "group by"算法创建 MySql View ?

java - 如何在 Java 中为现有的基于 Web 的应用程序构建命令行界面

java - 为什么我在构造函数中执行某些操作后无法调用 "this"

android - 将 sdcard 文档上传到 android 中的 Google Drive

java - Android 中如何停止铃声闹钟?

java - 最好的 jar 组织策略是什么?

java - 类中的方法返回 null 而不是通过异步调用检索的字符串

Android 警报对话框

ipad - objective-c .当用户单击 iPad 键盘上的 "toggle keyboard"按钮时,将 View 向下推