android - Rect改左后笔画的边变大了

标签 android android-paint

我尝试为我的 View 创建一个描边,如果 left 和 top 为 0,它会很好地工作。 在我更改 left 矩形后,左边缘笔划比正常情况下大。 例如,我将 left 设置为 10

public class SimpleView  extends View {
    Paint paint = new Paint();
    RectF bodyRect = new RectF();
    ...

    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        bodyRect = new RectF(10, 0, getWidth(), getHeight());

        paint.setColor(Color.WHITE);
        paint.setStrokeWidth(20);
        paint.setStyle(Paint.Style.STROKE);
        canvas.drawRect(bodyRect,paint);
    }
}

xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    android:background="#000">

    <...SimpleView
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_margin="50dp"
        android:background="#f00" />

</LinearLayout>

左边的笔划更大

enter image description here

如果我使用

bodyRect = new RectF(0, 0, getWidth(), getHeight());

enter image description here
结果看起来不错

如有任何帮助,我们将不胜感激。

最佳答案

我只是找到了解决方案。它并不大。 Stroke 默认不显示FULL
如果我这样做,整个笔画可以显示

bodyRect = new RectF(10, 10, getWidth()-10, getHeight()-10); // 10 = strokeWidth/2

enter image description here

关于android - Rect改左后笔画的边变大了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54397552/

相关文章:

android - 在 Android NDK 中从源代码构建 SurfaceFlinger 并使用测试目录内容

带有 RecyclerView 的 Android ScrollView 比我预期的要短

java - 如何获取 Canvas 顶部和底部的引用以进行动态定位?

java - 在Android Kotlin上使用 Canvas mask 输入的文本

android - 在两个不同的 Android 设备上创建的位图的 Base64 不相同

android - 是否能够创建一个 iPhone 应用程序,不通过 wifi 或 3G 使用互联网,而是使用手机上的 WIFI 发送信息

java - ProgressBar 不会在启动画面上逐渐显示进度

android - 如何获取可用网络提供商的列表?

Android Paint对象内存效率