package net.xpece.material.navigationdrawer.internal; import android.annotation.TargetApi; import android.content.Context; import android.content.res.TypedArray; import android.os.Build; import android.util.AttributeSet; import android.widget.LinearLayout; /** * LinearLayout which does not take its background dimensions into account * when measuring its dimensions. * <p></p> * Created by Eugen on 22. 2. 2015. */ public class NoBackgroundMeasureLinearLayout extends LinearLayout { private static final int[] ATTRS = new int[]{android.R.attr.minWidth, android.R.attr.minHeight}; private int mMinWidth; private int mMinHeight; public NoBackgroundMeasureLinearLayout(Context context) { super(context); init(context, null, 0, 0); } public NoBackgroundMeasureLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); init(context, attrs, 0, 0); } @TargetApi(Build.VERSION_CODES.HONEYCOMB) public NoBackgroundMeasureLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context, attrs, defStyleAttr, 0); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public NoBackgroundMeasureLinearLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(context, attrs, defStyleAttr, defStyleRes); } private void init(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { TypedArray a = context.obtainStyledAttributes(attrs, ATTRS, defStyleAttr, defStyleRes); mMinWidth = a.getInt(0, 0); mMinHeight = a.getInt(1, 0); a.recycle(); } @Override protected int getSuggestedMinimumHeight() { return mMinHeight; } @Override protected int getSuggestedMinimumWidth() { return mMinWidth; } @Override public void setMinimumHeight(int minHeight) { super.setMinimumHeight(minHeight); mMinHeight = minHeight; } @Override public void setMinimumWidth(int minWidth) { super.setMinimumWidth(minWidth); mMinWidth = minWidth; } }