15135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten/*
25135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten * Copyright 2018 The Android Open Source Project
35135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten *
45135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten * Licensed under the Apache License, Version 2.0 (the "License");
55135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten * you may not use this file except in compliance with the License.
65135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten * You may obtain a copy of the License at
75135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten *
85135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten *      http://www.apache.org/licenses/LICENSE-2.0
95135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten *
105135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten * Unless required by applicable law or agreed to in writing, software
115135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten * distributed under the License is distributed on an "AS IS" BASIS,
125135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten * See the License for the specific language governing permissions and
145135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten * limitations under the License.
155135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten */
165135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
175135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkerstenpackage com.android.widget;
185135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
195135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkerstenimport android.graphics.drawable.Drawable;
205135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkerstenimport android.media.update.ViewGroupProvider;
215135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkerstenimport android.util.AttributeSet;
225135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkerstenimport android.view.View;
235135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkerstenimport android.view.ViewGroup;
245135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkerstenimport android.view.ViewGroup.LayoutParams;
255135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkerstenimport android.view.ViewGroup.MarginLayoutParams;
265135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
275135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkerstenimport java.util.ArrayList;
285135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
295135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkerstenpublic class BaseLayout extends ViewGroupImpl {
305135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    private final ViewGroup mInstance;
315135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    private final ViewGroupProvider mSuperProvider;
325135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    private final ViewGroupProvider mPrivateProvider;
335135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
345135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    private final ArrayList<View> mMatchParentChildren = new ArrayList<>(1);
355135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
365135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    public BaseLayout(ViewGroup instance,
375135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten            ViewGroupProvider superProvider, ViewGroupProvider privateProvider) {
385135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        super(instance, superProvider, privateProvider);
395135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        mInstance = instance;
405135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        mSuperProvider = superProvider;
415135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        mPrivateProvider = privateProvider;
425135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    }
435135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
445135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    @Override
455135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    public boolean checkLayoutParams_impl(LayoutParams p) {
465135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        return p instanceof MarginLayoutParams;
475135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    }
485135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
495135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    @Override
505135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    public LayoutParams generateDefaultLayoutParams_impl() {
515135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        return new MarginLayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
525135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    }
535135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
545135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    @Override
555135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    public LayoutParams generateLayoutParams_impl(AttributeSet attrs) {
565135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        return new MarginLayoutParams(mInstance.getContext(), attrs);
575135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    }
585135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
595135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    @Override
605135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    public LayoutParams generateLayoutParams_impl(LayoutParams lp) {
615135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        if (lp instanceof MarginLayoutParams) {
625135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten            return lp;
635135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        }
645135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        return new MarginLayoutParams(lp);
655135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    }
665135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
675135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    @Override
685135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    public void onMeasure_impl(int widthMeasureSpec, int heightMeasureSpec) {
695135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        int count = mInstance.getChildCount();
705135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
715135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        final boolean measureMatchParentChildren =
725135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                View.MeasureSpec.getMode(widthMeasureSpec) != View.MeasureSpec.EXACTLY ||
735135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                        View.MeasureSpec.getMode(heightMeasureSpec) != View.MeasureSpec.EXACTLY;
745135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        mMatchParentChildren.clear();
755135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
765135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        int maxHeight = 0;
775135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        int maxWidth = 0;
785135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        int childState = 0;
795135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
805135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        for (int i = 0; i < count; i++) {
815135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten            final View child = mInstance.getChildAt(i);
825135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten            if (child.getVisibility() != View.GONE) {
835135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                mPrivateProvider.measureChildWithMargins_impl(
845135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                        child, widthMeasureSpec, 0, heightMeasureSpec, 0);
855135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                final MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();
865135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                maxWidth = Math.max(maxWidth,
875135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                        child.getMeasuredWidth() + lp.leftMargin + lp.rightMargin);
885135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                maxHeight = Math.max(maxHeight,
895135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                        child.getMeasuredHeight() + lp.topMargin + lp.bottomMargin);
905135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                childState = childState | child.getMeasuredState();
915135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                if (measureMatchParentChildren) {
925135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                    if (lp.width == LayoutParams.MATCH_PARENT ||
935135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                            lp.height == LayoutParams.MATCH_PARENT) {
945135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                        mMatchParentChildren.add(child);
955135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                    }
965135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                }
975135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten            }
985135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        }
995135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1005135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        // Account for padding too
1015135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        maxWidth += getPaddingLeftWithForeground() + getPaddingRightWithForeground();
1025135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        maxHeight += getPaddingTopWithForeground() + getPaddingBottomWithForeground();
1035135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1045135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        // Check against our minimum height and width
1055135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        maxHeight = Math.max(maxHeight, mPrivateProvider.getSuggestedMinimumHeight_impl());
1065135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        maxWidth = Math.max(maxWidth, mPrivateProvider.getSuggestedMinimumWidth_impl());
1075135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1085135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        // Check against our foreground's minimum height and width
1095135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        final Drawable drawable = mInstance.getForeground();
1105135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        if (drawable != null) {
1115135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten            maxHeight = Math.max(maxHeight, drawable.getMinimumHeight());
1125135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten            maxWidth = Math.max(maxWidth, drawable.getMinimumWidth());
1135135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        }
1145135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1155135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        mPrivateProvider.setMeasuredDimension_impl(
1165135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                mInstance.resolveSizeAndState(maxWidth, widthMeasureSpec, childState),
1175135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                mInstance.resolveSizeAndState(maxHeight, heightMeasureSpec,
1185135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                        childState << View.MEASURED_HEIGHT_STATE_SHIFT));
1195135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1205135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        count = mMatchParentChildren.size();
1215135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        if (count > 1) {
1225135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten            for (int i = 0; i < count; i++) {
1235135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                final View child = mMatchParentChildren.get(i);
1245135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                final MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();
1255135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1265135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                final int childWidthMeasureSpec;
1275135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                if (lp.width == LayoutParams.MATCH_PARENT) {
1285135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                    final int width = Math.max(0, mInstance.getMeasuredWidth()
1295135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                            - getPaddingLeftWithForeground() - getPaddingRightWithForeground()
1305135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                            - lp.leftMargin - lp.rightMargin);
1315135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                    childWidthMeasureSpec = View.MeasureSpec.makeMeasureSpec(
1325135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                            width, View.MeasureSpec.EXACTLY);
1335135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                } else {
1345135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                    childWidthMeasureSpec = mInstance.getChildMeasureSpec(widthMeasureSpec,
1355135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                            getPaddingLeftWithForeground() + getPaddingRightWithForeground() +
1365135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                                    lp.leftMargin + lp.rightMargin,
1375135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                            lp.width);
1385135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                }
1395135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1405135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                final int childHeightMeasureSpec;
1415135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                if (lp.height == LayoutParams.MATCH_PARENT) {
1425135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                    final int height = Math.max(0, mInstance.getMeasuredHeight()
1435135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                            - getPaddingTopWithForeground() - getPaddingBottomWithForeground()
1445135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                            - lp.topMargin - lp.bottomMargin);
1455135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                    childHeightMeasureSpec = View.MeasureSpec.makeMeasureSpec(
1465135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                            height, View.MeasureSpec.EXACTLY);
1475135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                } else {
1485135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                    childHeightMeasureSpec = mInstance.getChildMeasureSpec(heightMeasureSpec,
1495135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                            getPaddingTopWithForeground() + getPaddingBottomWithForeground() +
1505135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                                    lp.topMargin + lp.bottomMargin,
1515135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                            lp.height);
1525135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                }
1535135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1545135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                child.measure(childWidthMeasureSpec, childHeightMeasureSpec);
1555135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten            }
1565135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        }
1575135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    }
1585135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1595135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    @Override
1605135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    public void onLayout_impl(boolean changed, int left, int top, int right, int bottom) {
1615135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        final int count = mInstance.getChildCount();
1625135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1635135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        final int parentLeft = getPaddingLeftWithForeground();
1645135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        final int parentRight = right - left - getPaddingRightWithForeground();
1655135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1665135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        final int parentTop = getPaddingTopWithForeground();
1675135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        final int parentBottom = bottom - top - getPaddingBottomWithForeground();
1685135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1695135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        for (int i = 0; i < count; i++) {
1705135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten            final View child = mInstance.getChildAt(i);
1715135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten            if (child.getVisibility() != View.GONE) {
1725135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                final MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();
1735135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1745135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                final int width = child.getMeasuredWidth();
1755135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                final int height = child.getMeasuredHeight();
1765135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1775135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                int childLeft;
1785135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                int childTop;
1795135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1805135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                childLeft = parentLeft + (parentRight - parentLeft - width) / 2 +
1815135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                        lp.leftMargin - lp.rightMargin;
1825135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1835135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                childTop = parentTop + (parentBottom - parentTop - height) / 2 +
1845135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                        lp.topMargin - lp.bottomMargin;
1855135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1865135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                child.layout(childLeft, childTop, childLeft + width, childTop + height);
1875135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten            }
1885135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        }
1895135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    }
1905135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1915135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    @Override
1925135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    public boolean shouldDelayChildPressedState_impl() {
1935135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        return false;
1945135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    }
1955135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
1965135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    private int getPaddingLeftWithForeground() {
1975135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        return mInstance.isForegroundInsidePadding() ? Math.max(mInstance.getPaddingLeft(), 0) :
1985135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                mInstance.getPaddingLeft() + 0;
1995135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    }
2005135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
2015135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    private int getPaddingRightWithForeground() {
2025135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        return mInstance.isForegroundInsidePadding() ? Math.max(mInstance.getPaddingRight(), 0) :
2035135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                mInstance.getPaddingRight() + 0;
2045135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    }
2055135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
2065135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    private int getPaddingTopWithForeground() {
2075135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        return mInstance.isForegroundInsidePadding() ? Math.max(mInstance.getPaddingTop(), 0) :
2085135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                mInstance.getPaddingTop() + 0;
2095135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    }
2105135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten
2115135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    private int getPaddingBottomWithForeground() {
2125135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten        return mInstance.isForegroundInsidePadding() ? Math.max(mInstance.getPaddingBottom(), 0) :
2135135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten                mInstance.getPaddingBottom() + 0;
2145135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten    }
2155135ac1345395dc5c2974f8e735dfb4eb2706d02Christofer Åkersten}
216