package org.wikipedia.views; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.util.AttributeSet; import android.view.View; import org.wikipedia.util.DimenUtil; /** * Blank View that properly sizes itself to the same height as the translucent status bar for * offsetting. */ public class StatusBarBlankView extends View { public StatusBarBlankView(Context context) { this(context, null); } public StatusBarBlankView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public StatusBarBlankView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public StatusBarBlankView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } /** * The super implementation uses {@link View#getDefaultSize} which defaults to maximum allowed * size for wrap_content ({@link MeasureSpec#AT_MOST}). This implementation mimics * {@link android.widget.FrameLayout}'s behavior except without children. */ @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(resolveSizeAndState(getSuggestedMinimumWidth(), widthMeasureSpec, 0), resolveSizeAndState(getSuggestedMinimumHeight(), heightMeasureSpec, 0)); } @Override protected int getSuggestedMinimumHeight() { return Math.max(super.getSuggestedMinimumHeight(), getTranslucentStatusBarHeightPx()); } private int getTranslucentStatusBarHeightPx() { return DimenUtil.getTranslucentStatusBarHeightPx(getContext()); } }