|
7 | 7 | import android.provider.Settings; |
8 | 8 | import android.util.AttributeSet; |
9 | 9 | import android.util.DisplayMetrics; |
| 10 | +import android.util.Log; |
10 | 11 | import android.view.Display; |
11 | 12 | import android.view.View; |
12 | 13 | import android.view.ViewGroup; |
@@ -41,18 +42,99 @@ public void updateWidget(Activity activity) { |
41 | 42 | mActivity = activity; |
42 | 43 | mTextViews = new ArrayList<>(); |
43 | 44 |
|
| 45 | + Float[] tabCount = new Float[getTabCount()]; |
| 46 | + float f = 0.0f; |
| 47 | + |
44 | 48 | for (int tabPosition = 0; tabPosition < getTabCount(); tabPosition++) { |
45 | 49 | Tab tab = getTabAt(tabPosition); |
46 | 50 | ViewGroup tabView = (ViewGroup) getTabView(tabPosition); |
47 | 51 | if (!(tab == null || tabView == null)) { |
48 | 52 | TextView textView = tab.seslGetTextView(); |
49 | 53 | mTextViews.add(textView); |
50 | 54 | ViewSupport.setPointerIcon(tabView, 1000); |
| 55 | + |
| 56 | + tabCount[tabPosition] = getTabTextWidth(tab.seslGetTextView()); |
| 57 | + f += tabCount[tabPosition]; |
51 | 58 | } |
52 | 59 | } |
| 60 | + |
| 61 | + setViewDimens(tabCount, f); |
53 | 62 | invalidateTabLayout(); |
54 | 63 | } |
55 | 64 |
|
| 65 | + private void setViewDimens(Float[] fArr, float f) { |
| 66 | + int i; |
| 67 | + int tabCount = getTabCount(); |
| 68 | + if (tabCount > 0) { |
| 69 | + int dimensionPixelSize = getResources().getDimensionPixelSize(R.dimen.tablayout_start_end_margin); |
| 70 | + i = getContext().getResources().getDisplayMetrics().widthPixels; |
| 71 | + int i2 = i - (dimensionPixelSize * 2); |
| 72 | + float dimensionPixelSize2 = (float) getResources().getDimensionPixelSize(R.dimen.tablayout_text_padding); |
| 73 | + float f2 = (float) i2; |
| 74 | + float f3 = f2 / ((float) tabCount); |
| 75 | + float f4 = dimensionPixelSize2 * 2.0f; |
| 76 | + float f5 = (0.75f * f2) - f4; |
| 77 | + float f6 = 0.0f; |
| 78 | + int i3 = 0; |
| 79 | + int i4 = 0; |
| 80 | + for (int i5 = 0; i5 < tabCount; i5++) { |
| 81 | + Log.d("BottomNavigationView", "i : " + i5 + ", width : " + fArr[i5]); |
| 82 | + if (f5 < fArr[i5].floatValue()) { |
| 83 | + i3 = (int) (((float) i3) + (fArr[i5].floatValue() - f5)); |
| 84 | + fArr[i5] = Float.valueOf(f5); |
| 85 | + i4++; |
| 86 | + f6 = f5; |
| 87 | + } else if (f6 < fArr[i5].floatValue()) { |
| 88 | + f6 = fArr[i5].floatValue(); |
| 89 | + } |
| 90 | + } |
| 91 | + float f7 = f - ((float) i3); |
| 92 | + setTabMode(0); |
| 93 | + Log.d("BottomNavigationView", "[MODE_SCROLLABLE]"); |
| 94 | + Log.d("BottomNavigationView", "availableContentWidth : " + i2 + ", tabTextPaddingLeftRight : " + dimensionPixelSize2); |
| 95 | + ViewGroup viewGroup = (ViewGroup) getChildAt(0); |
| 96 | + int i6 = (tabCount - i4) * 2; |
| 97 | + int i7 = i6 > 0 ? ((int) ((f2 - f7) - ((((float) i4) * dimensionPixelSize2) * 2.0f))) / i6 : 0; |
| 98 | + int i8 = (int) dimensionPixelSize2; |
| 99 | + int i9 = -1; |
| 100 | + boolean z = true; |
| 101 | + if (i7 < i8) { |
| 102 | + i7 = i8; |
| 103 | + } else { |
| 104 | + float f8 = f6 + dimensionPixelSize2 + dimensionPixelSize2; |
| 105 | + if (f3 >= f8) { |
| 106 | + setTabMode(1); |
| 107 | + for (int i10 = 0; i10 < tabCount; i10++) { |
| 108 | + ((ViewGroup) viewGroup.getChildAt(i10)).getChildAt(0).getLayoutParams().width = -1; |
| 109 | + getTabAt(i10).seslGetTextView().setMaxWidth(i2); |
| 110 | + getTabAt(i10).seslGetTextView().setMinimumWidth(0); |
| 111 | + getTabAt(i10).seslGetTextView().setPadding(0, 0, 0, 0); |
| 112 | + } |
| 113 | + Log.d("BottomNavigationView", "[MODE_FIXED] TabCount : " + tabCount + ", minNeededTabWidth : " + f3 + ", maxTabWidth : " + f8); |
| 114 | + return; |
| 115 | + } |
| 116 | + } |
| 117 | + int i11 = 0; |
| 118 | + while (i11 < tabCount) { |
| 119 | + boolean z2 = fArr[i11].floatValue() >= f5 ? z : false; |
| 120 | + int floatValue = (int) (fArr[i11].floatValue() + ((z2 ? dimensionPixelSize2 : (float) i7) * 2.0f)); |
| 121 | + ViewGroup.LayoutParams layoutParams = viewGroup.getChildAt(i11).getLayoutParams(); |
| 122 | + layoutParams.width = floatValue; |
| 123 | + layoutParams.height = i9; |
| 124 | + viewGroup.getChildAt(i11).setMinimumWidth(floatValue); |
| 125 | + int i12 = z2 ? 0 : (int) (((float) i7) - dimensionPixelSize2); |
| 126 | + getTabAt(i11).seslGetTextView().setMaxWidth((int) f5); |
| 127 | + getTabAt(i11).seslGetTextView().setMinimumWidth(floatValue - ((int) f4)); |
| 128 | + getTabAt(i11).seslGetTextView().setPadding(i12, 0, i12, 0); |
| 129 | + Log.d("BottomNavigationView", "params.width : " + layoutParams.width + ", tabWidthList[" + i11 + "] : " + fArr[i11] + ", LeftRightPadding : " + (i7 * 2)); |
| 130 | + i11++; |
| 131 | + i9 = -1; |
| 132 | + z = true; |
| 133 | + } |
| 134 | + requestLayout(); |
| 135 | + } |
| 136 | + } |
| 137 | + |
56 | 138 | private void invalidateTabLayout() { |
57 | 139 | ArrayList<Float> tabTextWidthList = new ArrayList<>(); |
58 | 140 | float tabTextWidthSum = 0.0f; |
|
0 commit comments