Установка высоты/ширины пользовательского компонента программно

У меня есть пользовательский компонент, где я знаю, что ширина и высота всегда следующие:

android:layout_width="fill_parent" 

android:layout_height="wrap_content"

Я хотел бы избежать необходимости указывать ширину и высоту в XML, поскольку любые другие настройки неверны.

Я пробовал много вещей, но ничего не работает. Например, этот код не работает:

public class MyLayout extends ViewGroup {...

LayoutParams layoutParams = 
new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
setLayoutParams(layoutParams);

но что бы я ни делал, я получаю сообщение об исключении «Вы должны указать атрибут layout_width». который исчезнет, ​​если я верну XML layout_width, layout_height.

Я также пытался переопределить onFinishInflate(), но это никогда не вызывается. Я пытался наследовать от View, ViewGroup и TableLayout. Я пытался вызвать getLayoutParams(), но он возвращает ноль.

Как мне сделать так, чтобы мой пользовательский компонент не нуждался в них, указанных в XML?

Пожалуйста, без сарказма.

Спасибо.


person user405821    schedule 18.03.2011    source источник
comment
Попробуйте это androidactivity.wordpress.com/2011/10 /04/ и вместо setWidth попробуйте setMinWidth Надеюсь, это поможет   -  person    schedule 04.10.2011


Ответы (1)


У вас есть ответ,

LayoutParams layoutParams = новые LayoutParams (ширина, высота); setLayoutParams (параметры макета);

высота и ширина указаны в px, dip, sp

Кроме того, некоторые из них предоставляют методы setHeight и setWidth, вы можете их использовать.

person Vinay    schedule 18.03.2011
comment
Как я уже говорил, это не работает. Он выполняется, но по-прежнему выдает то же исключение через некоторое время после построения. Спасибо хоть. - person user405821; 18.03.2011
comment
высота и ширина указаны в каком из них? рх, дип или сп? это не может быть все сразу, верно? Предположим, я делаю новые LayoutParams (10, 10), это 10 провалов? 10 пикселей? 10 сп? - person Henley; 15.04.2012