Создание собственного вида

Я хочу создать собственный вид 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"
/>

Любой из трех конструкторов, предоставленных классом представления, может быть реализован.. поэтому предоставление конструктора с помощью набора атрибутов не является обязательным.

Другие вопросы по тегам