| package org.wordpress.android.widgets; |
| |
| import android.content.Context; |
| import android.content.res.TypedArray; |
| import android.util.AttributeSet; |
| import android.widget.LinearLayout; |
| |
| import org.wordpress.android.R; |
| |
| |
| public class WPLinearLayoutSizeBound extends LinearLayout { |
| private final int mMaxWidth; |
| private final int mMaxHeight; |
| |
| public WPLinearLayoutSizeBound(Context context) { |
| super(context); |
| mMaxWidth = 0; |
| mMaxHeight = 0; |
| } |
| |
| public WPLinearLayoutSizeBound(Context context, AttributeSet attrs) { |
| super(context, attrs); |
| TypedArray a = getContext().obtainStyledAttributes(attrs, |
| R.styleable.WPLinearLayoutSizeBound); |
| mMaxWidth = a.getDimensionPixelSize(R.styleable.WPLinearLayoutSizeBound_maxWidth, |
| Integer.MAX_VALUE); |
| mMaxHeight = a.getDimensionPixelSize(R.styleable.WPLinearLayoutSizeBound_maxHeight, |
| Integer.MAX_VALUE); |
| } |
| |
| @Override |
| protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { |
| int measuredWidth = MeasureSpec.getSize(widthMeasureSpec); |
| if (mMaxWidth > 0 && mMaxWidth < measuredWidth) { |
| int measureMode = MeasureSpec.getMode(widthMeasureSpec); |
| widthMeasureSpec = MeasureSpec.makeMeasureSpec(mMaxWidth, measureMode); |
| } |
| int measuredHeight = MeasureSpec.getSize(heightMeasureSpec); |
| if (mMaxHeight > 0 && mMaxHeight < measuredHeight) { |
| int measureMode = MeasureSpec.getMode(heightMeasureSpec); |
| heightMeasureSpec = MeasureSpec.makeMeasureSpec(mMaxHeight, measureMode); |
| } |
| super.onMeasure(widthMeasureSpec, heightMeasureSpec); |
| } |
| } |