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