Создание собственного вида
Я хочу создать собственный вид TestView
класс, для которого я могу создать объект с помощью new TestView()
, Однако новому классу представления необходим объект AttributeSet. Откуда я могу получить этот AttributeSet и что он должен включать?
2 ответа
Это не обязательно, и в большинстве случаев вам даже не нужно беспокоиться об этом, пока вы предоставляете конструкторы из 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"
/>
Любой из трех конструкторов, предоставленных классом представления, может быть реализован.. поэтому предоставление конструктора с помощью набора атрибутов не является обязательным.