kom*_*tFX 21 android android-layout
我从我的自定义视图扩展View
.有3个视图构造函数:
View(Context context, AttributeSet attrs, int defStyle)
View(Context context, AttributeSet attrs)
View(Context context)
从我的活动我打电话std.setContentView(R.layout.main)
.第二个构造函数在我的视图中被调用.为什么第二个?如何预先知道哪一个将被调用以及为什么?
Cra*_*igy 45
来自Android开发者网站的View文档:
从代码创建视图时使用的简单构造函数.
因此,您可以使用此构造函数在Java中创建View.从XML扩充时不会调用它.
public View (Context context, AttributeSet attrs)
从XML扩展视图时调用的构造方法.当从XML文件构造视图时,会调用此方法,从而提供XML文件中指定的属性.此版本使用默认样式0,因此应用的唯一属性值是Context主题和给定AttributeSet中的属性值.
添加完所有子项后,将调用onFinishInflate()方法.
因此,当您未指定样式时,在从XML扩展View时将调用此构造函数.
public View (Context context, AttributeSet attrs, int defStyle)
从XML执行通胀并应用特定于类的基本样式.View的这个构造函数允许子类在膨胀时使用它们自己的基本样式.例如,Button类的构造函数将调用此版本的超类构造函数,并为defStyle提供R.attr.buttonStyle; 这允许主题的按钮样式修改所有基本视图属性(特别是其背景)以及Button类的属性.
您应该实现所有这些构造函数,但是您可以分别通过调用this(context, null)
和this(context, attrs, 0)
前两个构建函数将所有工作放在第三个构造函数中.
归档时间: |
|
查看次数: |
6860 次 |
最近记录: |