我想创建一个自定义视图TestView
类,我可以通过new TestView()
创建对象。
但是,新的视图类需要AttributeSet对象。我从哪里获取AttributeSet以及它包含哪些内容?
答案 0 :(得分:10)
这不是强制性的,大多数情况下,只要您提供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"
/>
答案 1 :(得分:0)
视图类提供的3个构造函数中的任何一个都可以实现..因此为构造函数提供属性集不是必需的。