package net.osmand.view;
import net.osmand.plus.R;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.widget.LinearLayout;
public class ExpandableLinearLayout extends LinearLayout {
private float maxWidth;
public ExpandableLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
if(attrs != null) {
TypedArray ar = context.obtainStyledAttributes(attrs, R.styleable.ExpandableView);
maxWidth = ar.getDimension(R.styleable.ExpandableView_maxVisibleWidth, 0);
if (ar != null) {
ar.recycle();
}
}
}
public ExpandableLinearLayout(Context context) {
this(context, null);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (maxWidth > 0) {
if (MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.UNSPECIFIED) {
widthMeasureSpec = MeasureSpec.makeMeasureSpec((int) maxWidth, MeasureSpec.AT_MOST);
} else if (MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.AT_MOST && (MeasureSpec.getSize(widthMeasureSpec)) > maxWidth) {
widthMeasureSpec = MeasureSpec.makeMeasureSpec((int) maxWidth, MeasureSpec.AT_MOST);
} else if (MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.EXACTLY && (MeasureSpec.getSize(widthMeasureSpec)) > maxWidth) {
widthMeasureSpec = MeasureSpec.makeMeasureSpec((int) maxWidth, MeasureSpec.EXACTLY);
}
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
// if(maxWidth != 0 && getMeasuredWidth() > maxWidth) {
// setMeasuredDimension((int) maxWidth, getMeasuredHeight());
// }
}
}