gpt4 book ai didi

android - 查看通货膨胀和自定义 View

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:27 25 4
gpt4 key购买 nike

我的应用程序中有一个自定义 View ,我使用 View 中的 onDraw() 函数进行绘制。它还需要来自 ACtivity 的一些数据来绘制图形。因此,我没有使用标准的 setContentView(R.layout.myview),而是使用了以下内容 -

MyView mv = new MyView(this, userData);
setContentView(mv);

在我在自定义 View 上方添加 textview 之前,这似乎有效。然后我意识到上面的代码根本没有显示textview。此外,永远不会调用 onFinishInflate()。在这种情况下,我是否必须自己扩充布局?如果是这样,我是否也必须自己调用 onDraw() 函数?

谢谢,-P

最佳答案

onFinishInflate ()

Finalize inflating a view from XML. This is called as the last phase of inflation, after all child views have been added.

当您通过代码 (new ...) 创建 View 时,您并没有膨胀它...另一方面,如果您在 XML 中声明它或使用类似 getLayoutInflater().inflate(R.layout.your_view,null,null); 然后你正在膨胀它(和 onFinishInflate)将被调用。

不管你怎么做,onDraw 方法总是会被调用;因此您不必手动调用它。

顺便说一下...将您的自定义 View 保留在 XML 上始终是一个好主意,即使它需要数据。所以你至少有两个选择:

setContentView(R.layout.your_layout);
YourCustom custom = (YourCustom)findViewById(R.id.custom);
custom.setUserData(userData);

或者...您可以从自定义 View 中获取该数据(不推荐):

// inside your custom view...
UserData userData = Someclass.getUserData(getContext());
// etc... so that you don't have to pass it from the activity

关于android - 查看通货膨胀和自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6308106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com