У меня есть пользовательская кнопка, и я хочу установить ее размеры в коде (в отличие от xml), чтобы пользователи могли настраивать размеры. На первый взгляд очевидный путь к этому:
public class MyButton extends Button
{
public MyButton(Context context, AttributeSet attrs)
{
super(context, attrs);
int buttonSize = getSize();
setLayoutParams(new LinearLayout.LayoutParams(buttonSize, buttonSize));
}
Однако это не является универсальным, потому что это работает, только если родительский элемент Button является LinearLayout. Вместо этого я попробовал это:
@Override
protected void onMeasure(int specw, int spech)
{
int spec = MeasureSpec.makeMeasureSpec(getButtonSize()), MeasureSpec.EXACTLY);
super.onMeasure(spec, spec);
}
... что, кажется, работает хорошо. Кто-нибудь знает о каких-либо недостатках этого? или знаете о лучшем способе общего определения размеров виджетов в коде?