Проблема в том, что ViewGroup.LayoutParams.setBaseAttributes()
использует строгий getLayoutDimension(int, String)
.
Вам нужно расширить любой параметр LayoutParams и переопределить setBaseAttributes
.
Внутри вы можете либо вручную установить ширину и высоту, либо использовать более снисходительный getLayoutDimension(int, int)
. Наконец, вам придется переопределить в своем классе макета, что вы используете свои собственные LayoutParams.
@Override
public LayoutParams generateLayoutParams(AttributeSet attrs) {
return new LayoutParams(getContext(), attrs);
}
public static class LayoutParams extends FrameLayout.LayoutParams {
public LayoutParams(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void setBaseAttributes(TypedArray a, int widthAttr, int heightAttr) {
width = a.getLayoutDimension(widthAttr, WRAP_CONTENT);
height = a.getLayoutDimension(heightAttr, WRAP_CONTENT);
}
}