创建自定义视图

时间:2010-12-11 20:10:44

标签: android android-ui

我想创建一个自定义视图TestView类,我可以通过new TestView()创建对象。 但是,新的视图类需要AttributeSet对象。我从哪里获取AttributeSet以及它包含哪些内容?

2 个答案:

答案 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个构造函数中的任何一个都可以实现..因此为构造函数提供属性集不是必需的。