我想创建一个自定义视图
TestView
类,可以通过new TestView()
创建对象。
然而,一个新的视图类需要一个 AttributeSet 对象。我从哪里获取这个 AttributeSet 对象,它应该包括什么?TestView
类,可以通过new TestView()
创建对象。
然而,一个新的视图类需要一个 AttributeSet 对象。我从哪里获取这个 AttributeSet 对象,它应该包括什么?这不是强制要求的,大多数情况下,只要您提供从View
传递给super()
的构造函数即可,您甚至不必担心它。
public CustomView(Context context) // No Attributes in this one.
{
super(context);
// Your code here
}
public CustomView(Context context, AttributeSet attrs)
{
super(context, attrs);
// Your code here
}
public CustomView(Context context, AttributeSet attrs, int default_style)
{
super(context, attrs, default_style);
// Your code here
}
View
负责处理与添加视图到布局时传递的所有 android:*
属性相关的繁重任务。如果你已定义了它们,你的构造函数可以利用这些属性或你自己的属性:
<com.blrfl.CustomView
android:id="@+id/customid"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
blrfl:foo="bar"
blrfl:quux="bletch"
/>
视图类提供的3个构造函数中的任何一个都可以实现。因此,提供带有属性集的构造函数并不是强制性的。