画布不在自定义视图中绘制

2023-11-26

我创建了一个自定义视图 CircleView,如下所示:

public class CircleView extends LinearLayout {

    Paint paint1;
    public CircleView(Context context) {
        super(context);
        init();
    }   
    public CircleView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }
    public void init() {
        paint1 = new Paint();
        paint1.setColor(Color.RED); 
    }       
    protected void onDraw(Canvas canvas) {
        //super.onDraw(canvas);         
        canvas.drawCircle(50, 50, 25, paint1);
        this.draw(canvas);  
    }
}

然后我将它包含在我的 Activity 的布局根中<RelativeLayout>:

  <com.turkidroid.test.CircleView
      android:id="@+id/circle_view"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent" 
      android:layout_centerInParent="true"  />  

然而,什么也没画出来!

  • 我是否正确实施了自定义视图?
  • 或者是我使用自定义视图的方式?

一些信息:

  • CircleView 和 MyActivity 都在同一个包中:com.turkidroid.test.
  • In onDraw()方法,我尝试包括super.onDraw()并评论它。
  • 我知道我可以用更简单的方法画一个圆圈,但是我的 CircleViewwill包含的不仅仅是画一个圆圈。我需要将其设为自定义视图。

Your onDraw方法永远不会被调用,您需要调用setWillNotDraw(false)在自定义视图的构造函数上以获得onDraw实际上打电话了。

正如 Android SDK 中所述:

如果此视图本身不进行任何绘图,请设置此标志以允许 进一步优化。默认情况下,View 上没有设置此标志,但是 可以在某些 View 子类上设置,例如ViewGroup。通常,如果 你覆盖onDraw(android.graphics.Canvas)你应该清除这个 旗帜。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

画布不在自定义视图中绘制 的相关文章

随机推荐

  • 无法加载文件或程序集“xxxx”或其依赖项之一。该系统找不到指定的文件

    在 VS2005 中 我们整个编程人员都收到此错误消息零星地它总是在贝尼控制项目 此错误消息每天会发生多次 并且在进入控件的设计模式时会发生 通常重建贝尼控制解决了问题 但有时必须重建整个解决方案 还有其他人解决了这个问题吗 有哪些建议或网
  • 在 ncurses 中捕获 control+key 的正确方法

    在 ncurses 中捕获 control key 的正确方法是什么 当前我正在这样做定义控制 如下所示 define ctl x x 0x1f 它工作正常 但问题是我无法同时捕获 C j 和 ENTER 这是因为 j 106 110101
  • java中可以连续分配对象吗?

    假设我有一大堆相对较小的对象 我需要经常迭代它们 我想通过提高缓存性能来优化我的迭代 所以我想分配物体 而不是引用 在内存上连续 所以我会得到更少的缓存未命中 并且整体性能可能会明显更好 在 C 中 我可以只分配一个对象数组 它会根据我的需
  • 为什么可以在持久卷上设置多个访问模式?

    例如在下面的例子中 apiVersion v1 kind PersistentVolumeClaim metadata name exmaple pvc spec accessModes ReadOnlyMany ReadWriteMany
  • 如何在 Java 程序中运行 Java 源代码

    我写了一些代码来编译Java源代码 然后它会生成 class 文件 问题是我该如何运行它 例如 我可以设置程序和类的名称 我使用了 prog p new prog 但是在这种情况下 类文件在编译之前还不存在 不太确定该怎么做 有人可以给我建
  • Oracle 何时/为何将 NaN 添加到数据库表中的行

    我知道 NaN 代表非数字 但是 我很难理解 Oracle 何时以及为何将其添加到一行中 是遇到小于 0 的值 如负数 还是垃圾值时 从文档中 Oracle 数据库数字数据类型存储正负定点和浮点数 零 无穷大以及作为未定义运算结果的值 不是
  • iPhone 上的 JSON POST 请求(使用 HTTPS)

    我托管了一个 WCF 服务 并且尝试在 iPhone 应用程序中将其用作 JSON POST 请求 我计划稍后使用 JSON 序列化器 但这就是我的请求 NSString jsonRequest username user password
  • 精确检查一个布尔选项集

    嗯 这有点hacky function b2n boo return boo 1 0 if b2n opt1 b2n opt2 b2n opt3 1 throw new Error Exactly one option must be se
  • Android Studio 无法与 HoloEverywhere 和 ActionBarSherlock 配合使用

    我能够将 ActionBarSherlock 和 HoloEverywhere 导入 Android Studio 但无法编译我的应用程序 截屏 https docs google com file d 0BwOn70drOiMfZHZVe
  • hibernate 4.3.x - 加载所有实体注释类

    在我从事的项目中 我不使用 Spring 仅使用 Hibernate 我不想使用 hbm xml 文件进行实体映射 描述 等 我只想使用注释 我如何告诉 Hibernate 加载所有内容Entity Table来自某些包的带注释的类 我在网
  • 在 Python 中实现可观察集合的推荐方法?

    我希望在 Python 中有一些可观察的集合 序列 让我能够监听更改事件 例如添加新项目或更新项目 list ObservableList a b c list addChangeListener lambda new value prin
  • 跨翻译单元和 gcc 4.6 自动内联函数

    如果我不将函数 f 声明为内联 如下 A h X f Y y A cpp X f Y y 然后在不同的翻译单元中 B cpp include A h Z g W w f 然后我用 gcc 4 6 编译两个翻译单元 A o 和 B o 然后也
  • 如何从控制器返回特定的状态代码并且没有内容?

    我希望下面的示例控制器返回没有内容的状态代码 418 设置状态代码很容易 但似乎需要做一些事情来表明请求结束 在 ASP NET Core 之前的 MVC 中或在 WebForms 中 可能会调用Response End 但它在 ASP N
  • C# 中的条件变量 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 C 中使用条件变量和监视器吗 有人能给我举个例子吗 与仅用于在 NET 中发出信号的条件变量等效的是抽象 WaitHandle 类 它的实际实现是 ManualResetEven
  • Xamarin Forms共享首选项交叉

    我想知道以跨平台方式操作应用程序设置的最佳解决方案是什么 在 iOS 中 我们可以在设置屏幕中更改应用程序外部的设置 但在 Windows Phone 和 Android 中则没有此功能 因此 我的想法是在应用程序内创建一个普通页面 屏幕
  • 用于开发 Flash 应用程序的最佳开源工具是什么?最好从哪些地方开始学习? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 就工具而言 我知道Haxe MTASC and swfmill 您能提供与其中任何一个相关的成功或恐怖故事吗 还有其他我应该调查的吗 在学习方面 Adobe 开发人员连接似乎包含不错的参考
  • 如何在 Three.js 中使用 gltf 模型投射阴影?

    嘿 我是三个 js 的新手 想知道如何用 gltf 模型投射阴影 我可以看到这是可能的 因为它正在工作here我假设我没有正确构建我的代码 var model new THREE GLTFLoader model load https th
  • Android Studio 测试显示测试结果 0/0。我怎样才能开始测试?

    我正在 Android Studio 中学习 Kotlin 初学者课程 在测试阶段 检测结果总是0 0 我怎样才能完成这些测试 代码由 Google Android 开发人员编写 应该可以完美运行 我用的是同样的 应用程序编译没有错误 代码
  • 应用程序特定的权限设置不授予本地激活权限

    我的一位同事建议我可以在 GPO 中修复此错误 它是 Windows 2016 服务器 The application specific permission settings do not grant Local Activation p
  • 画布不在自定义视图中绘制

    我创建了一个自定义视图 CircleView 如下所示 public class CircleView extends LinearLayout Paint paint1 public CircleView Context context