use*_*201 4 android android-layout
我在我的应用程序中有一个自定义视图,我使用视图中的onDraw()函数绘制.它还需要来自ACtivity的一些数据来绘制图形.因此,而不是使用标准setContentView(R.layout.myview)我使用以下 -
MyView mv = new MyView(this, userData);
setContentView(mv);
Run Code Online (Sandbox Code Playgroud)
这似乎有效,直到我textview在customview上面添加了一个.然后我意识到上面的代码根本没有显示textview.也onFinishInflate()永远不会被调用.在这种情况下,我是否必须自己夸大布局?如果是这样,我也必须自己调用这个onDraw()功能吗?
谢谢, - P.
onFinishInflate ()完成从XML扩展视图.在添加所有儿童观点后,这被称为通胀的最后阶段.
当您通过代码(new ...)创建视图时,您不会对其进行膨胀...另一方面,如果您在XML中声明它或使用类似的东西,getLayoutInflater().inflate(R.layout.your_view,null,null);那么您将对其进行膨胀(和onFinishInflate).
无论你怎么做,onDraw都会调用方法; 所以你不必手动调用它.
顺便说一句......将自定义视图保留在XML上总是一个好主意,即使它需要数据.所以你至少有两个选择:
setContentView(R.layout.your_layout);
YourCustom custom = (YourCustom)findViewById(R.id.custom);
custom.setUserData(userData);
Run Code Online (Sandbox Code Playgroud)
或者...您可以从自定义视图中获取该数据(不推荐):
// inside your custom view...
UserData userData = Someclass.getUserData(getContext());
// etc... so that you don't have to pass it from the activity
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5212 次 |
| 最近记录: |