2013-12-14 7 views
0

Я хочу создать пользовательский вид, похожий на выключатель питания (переключатель, который переключается между ON и OFF). Когда я начал его реализацию я столкнулся с 3 конструкторами для View класса:Android - Создать пользовательский вид

public CusatomView(Context context) { 
    super(context); 
} 

public CustomView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public CustomView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
} 

Теперь мой вопрос: Какой из этих конструкторов я должен закончить его, чтобы получить свой собственный атрибут XML (например: textOn и textOff) ?
И какова роль каждого?

+1

Проверьте это, если это поможет http://stackoverflow.com/questions/18681956/setting-color-of-a-paint-object-in-custom-view. Также читайте «Профессиональное развитие Android» от Reto Meier. Глава 3. – Raghunandan

+0

@ Raghunandan спасибо за вашу ссылку, это полезно –

ответ

2

В идеале вы должны сделать свой материал в отдельном методе и вызвать это из всех трех конструкторов, потому что вы никогда не знаете, какой из конструкторов будет вызываться. Вот роли:

  1. CusatomView(Context context) создает новый вид без каких-либо атрибутов инициализированы.

  2. CustomView(Context context, AttributeSet attrs) вызывается при установке атрибутов, таких как layout_height или layout_width в вашем layout.xml

  3. CustomView(Context context, AttributeSet attrs, int defStyle) используется при установке стилей на ваш взгляд.

0

Вы должны создать еще один funciton init и позвонить по нему всем.

public CusatomView(Context context) { 
    super(context); 
    init(); 
} 

public CustomView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    init(); 
} 

public CustomView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    init(); 
} 

Вещь любого из этих конструкторов может использоваться для создания пользовательского представления. Как и при создании представления в java-коде, вы просто предоставляете контекст и когда он создается из xml attrs, также предоставляется.

Смежные вопросы