package com.google.android.material.tabs; import android.R; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.annotation.TargetApi; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.TypedArray; import android.database.DataSetObserver; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.RectF; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.RippleDrawable; import android.os.Build; import android.text.Layout; import android.text.TextUtils; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.HorizontalScrollView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import androidx.appcompat.app.ActionBar; import androidx.appcompat.content.res.AppCompatResources; import androidx.appcompat.widget.TooltipCompat; import androidx.core.graphics.drawable.DrawableCompat; import androidx.core.util.Pools$Pool; import androidx.core.util.Pools$SimplePool; import androidx.core.util.Pools$SynchronizedPool; import androidx.core.view.MarginLayoutParamsCompat; import androidx.core.view.PointerIconCompat; import androidx.core.view.ViewCompat; import androidx.core.widget.TextViewCompat; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; import com.google.android.material.R$attr; import com.google.android.material.R$dimen; import com.google.android.material.R$layout; import com.google.android.material.R$style; import com.google.android.material.R$styleable; import com.google.android.material.animation.AnimationUtils; import com.google.android.material.internal.ThemeEnforcement; import com.google.android.material.internal.ViewUtils; import com.google.android.material.resources.MaterialResources; import com.google.android.material.ripple.RippleUtils; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Iterator; @ViewPager.DecorView /* loaded from: classes.dex */ public class TabLayout extends HorizontalScrollView { private static final Pools$Pool P = new Pools$SynchronizedPool(16); int A; boolean B; boolean C; boolean D; private BaseOnTabSelectedListener E; private final ArrayList F; private BaseOnTabSelectedListener G; private ValueAnimator H; ViewPager I; private PagerAdapter J; private DataSetObserver K; private TabLayoutOnPageChangeListener L; private AdapterChangeListener M; private boolean N; private final Pools$Pool O; private final ArrayList a; private Tab b; private final RectF c; private final SlidingTabIndicator d; int e; int f; int g; int h; int i; ColorStateList j; ColorStateList k; ColorStateList l; Drawable m; PorterDuff.Mode n; float o; float p; final int q; int r; private final int s; private final int t; private final int u; private int v; int x; int y; int z; public interface BaseOnTabSelectedListener { void onTabReselected(T t); void onTabSelected(T t); void onTabUnselected(T t); } public interface OnTabSelectedListener extends BaseOnTabSelectedListener { } private class PagerAdapterObserver extends DataSetObserver { PagerAdapterObserver() { } @Override // android.database.DataSetObserver public void onChanged() { TabLayout.this.c(); } @Override // android.database.DataSetObserver public void onInvalidated() { TabLayout.this.c(); } } public static class Tab { private Object a; private Drawable b; private CharSequence c; private CharSequence d; private int e = -1; private View f; public TabLayout g; public TabView h; public int c() { return this.e; } public Object d() { return this.a; } public CharSequence e() { return this.c; } public boolean f() { TabLayout tabLayout = this.g; if (tabLayout != null) { return tabLayout.getSelectedTabPosition() == this.e; } throw new IllegalArgumentException("Tab not attached to a TabLayout"); } void g() { this.g = null; this.h = null; this.a = null; this.b = null; this.c = null; this.d = null; this.e = -1; this.f = null; } public void h() { TabLayout tabLayout = this.g; if (tabLayout == null) { throw new IllegalArgumentException("Tab not attached to a TabLayout"); } tabLayout.c(this); } void i() { TabView tabView = this.h; if (tabView != null) { tabView.b(); } } public Tab a(Object obj) { this.a = obj; return this; } public Drawable b() { return this.b; } public View a() { return this.f; } void b(int i) { this.e = i; } public Tab a(View view) { this.f = view; i(); return this; } public Tab b(CharSequence charSequence) { if (TextUtils.isEmpty(this.d) && !TextUtils.isEmpty(charSequence)) { this.h.setContentDescription(charSequence); } this.c = charSequence; i(); return this; } public Tab a(int i) { a(LayoutInflater.from(this.h.getContext()).inflate(i, (ViewGroup) this.h, false)); return this; } public Tab a(Drawable drawable) { this.b = drawable; i(); return this; } public Tab a(CharSequence charSequence) { this.d = charSequence; i(); return this; } } public static class TabLayoutOnPageChangeListener implements ViewPager.OnPageChangeListener { private final WeakReference a; private int b; private int c; public TabLayoutOnPageChangeListener(TabLayout tabLayout) { this.a = new WeakReference<>(tabLayout); } void a() { this.c = 0; this.b = 0; } @Override // androidx.viewpager.widget.ViewPager.OnPageChangeListener public void onPageScrollStateChanged(int i) { this.b = this.c; this.c = i; } @Override // androidx.viewpager.widget.ViewPager.OnPageChangeListener public void onPageScrolled(int i, float f, int i2) { TabLayout tabLayout = this.a.get(); if (tabLayout != null) { tabLayout.a(i, f, this.c != 2 || this.b == 1, (this.c == 2 && this.b == 0) ? false : true); } } @Override // androidx.viewpager.widget.ViewPager.OnPageChangeListener public void onPageSelected(int i) { TabLayout tabLayout = this.a.get(); if (tabLayout == null || tabLayout.getSelectedTabPosition() == i || i >= tabLayout.getTabCount()) { return; } int i2 = this.c; tabLayout.b(tabLayout.b(i), i2 == 0 || (i2 == 2 && this.b == 0)); } } class TabView extends LinearLayout { private Tab a; private TextView b; private ImageView c; private View d; private TextView e; private ImageView f; private Drawable g; private int h; public TabView(Context context) { super(context); this.h = 2; a(context); ViewCompat.a(this, TabLayout.this.e, TabLayout.this.f, TabLayout.this.g, TabLayout.this.h); setGravity(17); setOrientation(!TabLayout.this.B ? 1 : 0); setClickable(true); ViewCompat.a(this, PointerIconCompat.a(getContext(), 1002)); } /* JADX INFO: Access modifiers changed from: private */ public int d() { int i = 0; int i2 = 0; boolean z = false; for (View view : new View[]{this.b, this.c, this.d}) { if (view != null && view.getVisibility() == 0) { i2 = z ? Math.min(i2, view.getLeft()) : view.getLeft(); i = z ? Math.max(i, view.getRight()) : view.getRight(); z = true; } } return i - i2; } final void b() { Tab tab = this.a; Drawable drawable = null; View a = tab != null ? tab.a() : null; if (a != null) { ViewParent parent = a.getParent(); if (parent != this) { if (parent != null) { ((ViewGroup) parent).removeView(a); } addView(a); } this.d = a; TextView textView = this.b; if (textView != null) { textView.setVisibility(8); } ImageView imageView = this.c; if (imageView != null) { imageView.setVisibility(8); this.c.setImageDrawable(null); } this.e = (TextView) a.findViewById(R.id.text1); TextView textView2 = this.e; if (textView2 != null) { this.h = TextViewCompat.d(textView2); } this.f = (ImageView) a.findViewById(R.id.icon); } else { View view = this.d; if (view != null) { removeView(view); this.d = null; } this.e = null; this.f = null; } boolean z = false; if (this.d == null) { if (this.c == null) { ImageView imageView2 = (ImageView) LayoutInflater.from(getContext()).inflate(R$layout.design_layout_tab_icon, (ViewGroup) this, false); addView(imageView2, 0); this.c = imageView2; } if (tab != null && tab.b() != null) { drawable = DrawableCompat.h(tab.b()).mutate(); } if (drawable != null) { DrawableCompat.a(drawable, TabLayout.this.k); PorterDuff.Mode mode = TabLayout.this.n; if (mode != null) { DrawableCompat.a(drawable, mode); } } if (this.b == null) { TextView textView3 = (TextView) LayoutInflater.from(getContext()).inflate(R$layout.design_layout_tab_text, (ViewGroup) this, false); addView(textView3); this.b = textView3; this.h = TextViewCompat.d(this.b); } TextViewCompat.d(this.b, TabLayout.this.i); ColorStateList colorStateList = TabLayout.this.j; if (colorStateList != null) { this.b.setTextColor(colorStateList); } a(this.b, this.c); } else if (this.e != null || this.f != null) { a(this.e, this.f); } if (tab != null && !TextUtils.isEmpty(tab.d)) { setContentDescription(tab.d); } if (tab != null && tab.f()) { z = true; } setSelected(z); } final void c() { setOrientation(!TabLayout.this.B ? 1 : 0); if (this.e == null && this.f == null) { a(this.b, this.c); } else { a(this.e, this.f); } } @Override // android.view.ViewGroup, android.view.View protected void drawableStateChanged() { super.drawableStateChanged(); int[] drawableState = getDrawableState(); Drawable drawable = this.g; boolean z = false; if (drawable != null && drawable.isStateful()) { z = false | this.g.setState(drawableState); } if (z) { invalidate(); TabLayout.this.invalidate(); } } @Override // android.view.View public void onInitializeAccessibilityEvent(AccessibilityEvent accessibilityEvent) { super.onInitializeAccessibilityEvent(accessibilityEvent); accessibilityEvent.setClassName(ActionBar.Tab.class.getName()); } @Override // android.view.View @TargetApi(14) public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo accessibilityNodeInfo) { super.onInitializeAccessibilityNodeInfo(accessibilityNodeInfo); accessibilityNodeInfo.setClassName(ActionBar.Tab.class.getName()); } @Override // android.widget.LinearLayout, android.view.View public void onMeasure(int i, int i2) { Layout layout; int size = View.MeasureSpec.getSize(i); int mode = View.MeasureSpec.getMode(i); int tabMaxWidth = TabLayout.this.getTabMaxWidth(); if (tabMaxWidth > 0 && (mode == 0 || size > tabMaxWidth)) { i = View.MeasureSpec.makeMeasureSpec(TabLayout.this.r, Integer.MIN_VALUE); } super.onMeasure(i, i2); if (this.b != null) { float f = TabLayout.this.o; int i3 = this.h; ImageView imageView = this.c; boolean z = true; if (imageView == null || imageView.getVisibility() != 0) { TextView textView = this.b; if (textView != null && textView.getLineCount() > 1) { f = TabLayout.this.p; } } else { i3 = 1; } float textSize = this.b.getTextSize(); int lineCount = this.b.getLineCount(); int d = TextViewCompat.d(this.b); if (f != textSize || (d >= 0 && i3 != d)) { if (TabLayout.this.A == 1 && f > textSize && lineCount == 1 && ((layout = this.b.getLayout()) == null || a(layout, 0, f) > (getMeasuredWidth() - getPaddingLeft()) - getPaddingRight())) { z = false; } if (z) { this.b.setTextSize(0, f); this.b.setMaxLines(i3); super.onMeasure(i, i2); } } } } @Override // android.view.View public boolean performClick() { boolean performClick = super.performClick(); if (this.a == null) { return performClick; } if (!performClick) { playSoundEffect(0); } this.a.h(); return true; } @Override // android.view.View public void setSelected(boolean z) { boolean z2 = isSelected() != z; super.setSelected(z); if (z2 && z && Build.VERSION.SDK_INT < 16) { sendAccessibilityEvent(4); } TextView textView = this.b; if (textView != null) { textView.setSelected(z); } ImageView imageView = this.c; if (imageView != null) { imageView.setSelected(z); } View view = this.d; if (view != null) { view.setSelected(z); } } /* JADX INFO: Access modifiers changed from: private */ /* JADX WARN: Multi-variable type inference failed */ /* JADX WARN: Type inference failed for: r0v3, types: [android.graphics.drawable.RippleDrawable] */ /* JADX WARN: Type inference failed for: r2v3, types: [android.graphics.drawable.LayerDrawable] */ public void a(Context context) { int i = TabLayout.this.q; if (i != 0) { this.g = AppCompatResources.c(context, i); Drawable drawable = this.g; if (drawable != null && drawable.isStateful()) { this.g.setState(getDrawableState()); } } else { this.g = null; } GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.setColor(0); if (TabLayout.this.l != null) { GradientDrawable gradientDrawable2 = new GradientDrawable(); gradientDrawable2.setCornerRadius(1.0E-5f); gradientDrawable2.setColor(-1); ColorStateList a = RippleUtils.a(TabLayout.this.l); if (Build.VERSION.SDK_INT >= 21) { if (TabLayout.this.D) { gradientDrawable = null; } gradientDrawable = new RippleDrawable(a, gradientDrawable, TabLayout.this.D ? null : gradientDrawable2); } else { Drawable h = DrawableCompat.h(gradientDrawable2); DrawableCompat.a(h, a); gradientDrawable = new LayerDrawable(new Drawable[]{gradientDrawable, h}); } } ViewCompat.a(this, gradientDrawable); TabLayout.this.invalidate(); } /* JADX INFO: Access modifiers changed from: private */ public void a(Canvas canvas) { Drawable drawable = this.g; if (drawable != null) { drawable.setBounds(getLeft(), getTop(), getRight(), getBottom()); this.g.draw(canvas); } } void a(Tab tab) { if (tab != this.a) { this.a = tab; b(); } } void a() { a((Tab) null); setSelected(false); } private void a(TextView textView, ImageView imageView) { Tab tab = this.a; Drawable mutate = (tab == null || tab.b() == null) ? null : DrawableCompat.h(this.a.b()).mutate(); Tab tab2 = this.a; CharSequence e = tab2 != null ? tab2.e() : null; if (imageView != null) { if (mutate != null) { imageView.setImageDrawable(mutate); imageView.setVisibility(0); setVisibility(0); } else { imageView.setVisibility(8); imageView.setImageDrawable(null); } } boolean z = !TextUtils.isEmpty(e); if (textView != null) { if (z) { textView.setText(e); textView.setVisibility(0); setVisibility(0); } else { textView.setVisibility(8); textView.setText((CharSequence) null); } } if (imageView != null) { ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) imageView.getLayoutParams(); int a = (z && imageView.getVisibility() == 0) ? TabLayout.this.a(8) : 0; if (TabLayout.this.B) { if (a != MarginLayoutParamsCompat.a(marginLayoutParams)) { MarginLayoutParamsCompat.a(marginLayoutParams, a); marginLayoutParams.bottomMargin = 0; imageView.setLayoutParams(marginLayoutParams); imageView.requestLayout(); } } else if (a != marginLayoutParams.bottomMargin) { marginLayoutParams.bottomMargin = a; MarginLayoutParamsCompat.a(marginLayoutParams, 0); imageView.setLayoutParams(marginLayoutParams); imageView.requestLayout(); } } Tab tab3 = this.a; CharSequence charSequence = tab3 != null ? tab3.d : null; if (z) { charSequence = null; } TooltipCompat.a(this, charSequence); } private float a(Layout layout, int i, float f) { return layout.getLineWidth(i) * (f / layout.getPaint().getTextSize()); } } public static class ViewPagerOnTabSelectedListener implements OnTabSelectedListener { private final ViewPager a; public ViewPagerOnTabSelectedListener(ViewPager viewPager) { this.a = viewPager; } @Override // com.google.android.material.tabs.TabLayout.BaseOnTabSelectedListener public void onTabReselected(Tab tab) { } @Override // com.google.android.material.tabs.TabLayout.BaseOnTabSelectedListener public void onTabSelected(Tab tab) { this.a.setCurrentItem(tab.c()); } @Override // com.google.android.material.tabs.TabLayout.BaseOnTabSelectedListener public void onTabUnselected(Tab tab) { } } public TabLayout(Context context) { this(context, null); } private TabView e(Tab tab) { Pools$Pool pools$Pool = this.O; TabView a = pools$Pool != null ? pools$Pool.a() : null; if (a == null) { a = new TabView(getContext()); } a.a(tab); a.setFocusable(true); a.setMinimumWidth(getTabMinWidth()); if (TextUtils.isEmpty(tab.d)) { a.setContentDescription(tab.c); } else { a.setContentDescription(tab.d); } return a; } private LinearLayout.LayoutParams f() { LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(-2, -1); a(layoutParams); return layoutParams; } private void g() { if (this.H == null) { this.H = new ValueAnimator(); this.H.setInterpolator(AnimationUtils.b); this.H.setDuration(this.y); this.H.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // from class: com.google.android.material.tabs.TabLayout.1 @Override // android.animation.ValueAnimator.AnimatorUpdateListener public void onAnimationUpdate(ValueAnimator valueAnimator) { TabLayout.this.scrollTo(((Integer) valueAnimator.getAnimatedValue()).intValue(), 0); } }); } } private int getDefaultHeight() { int size = this.a.size(); boolean z = false; int i = 0; while (true) { if (i < size) { Tab tab = this.a.get(i); if (tab != null && tab.b() != null && !TextUtils.isEmpty(tab.e())) { z = true; break; } i++; } else { break; } } return (!z || this.B) ? 48 : 72; } private int getTabMinWidth() { int i = this.s; if (i != -1) { return i; } if (this.A == 0) { return this.u; } return 0; } private int getTabScrollRange() { return Math.max(0, ((this.d.getWidth() - getWidth()) - getPaddingLeft()) - getPaddingRight()); } private void h() { int size = this.a.size(); for (int i = 0; i < size; i++) { this.a.get(i).i(); } } private void setSelectedTabView(int i) { int childCount = this.d.getChildCount(); if (i < childCount) { int i2 = 0; while (i2 < childCount) { View childAt = this.d.getChildAt(i2); boolean z = true; childAt.setSelected(i2 == i); if (i2 != i) { z = false; } childAt.setActivated(z); i2++; } } } @Override // android.widget.HorizontalScrollView, android.view.ViewGroup public void addView(View view) { a(view); } public void b(BaseOnTabSelectedListener baseOnTabSelectedListener) { this.F.remove(baseOnTabSelectedListener); } void c() { int currentItem; d(); PagerAdapter pagerAdapter = this.J; if (pagerAdapter != null) { int count = pagerAdapter.getCount(); for (int i = 0; i < count; i++) { Tab b = b(); b.b(this.J.getPageTitle(i)); a(b, false); } ViewPager viewPager = this.I; if (viewPager == null || count <= 0 || (currentItem = viewPager.getCurrentItem()) == getSelectedTabPosition() || currentItem >= getTabCount()) { return; } c(b(currentItem)); } } public void d() { for (int childCount = this.d.getChildCount() - 1; childCount >= 0; childCount--) { d(childCount); } Iterator it = this.a.iterator(); while (it.hasNext()) { Tab next = it.next(); it.remove(); next.g(); b(next); } this.b = null; } public int getSelectedTabPosition() { Tab tab = this.b; if (tab != null) { return tab.c(); } return -1; } public int getTabCount() { return this.a.size(); } public int getTabGravity() { return this.x; } public ColorStateList getTabIconTint() { return this.k; } public int getTabIndicatorGravity() { return this.z; } int getTabMaxWidth() { return this.r; } public int getTabMode() { return this.A; } public ColorStateList getTabRippleColor() { return this.l; } public Drawable getTabSelectedIndicator() { return this.m; } public ColorStateList getTabTextColors() { return this.j; } @Override // android.view.ViewGroup, android.view.View protected void onAttachedToWindow() { super.onAttachedToWindow(); if (this.I == null) { ViewParent parent = getParent(); if (parent instanceof ViewPager) { a((ViewPager) parent, true, true); } } } @Override // android.view.ViewGroup, android.view.View protected void onDetachedFromWindow() { super.onDetachedFromWindow(); if (this.N) { setupWithViewPager(null); this.N = false; } } @Override // android.view.View protected void onDraw(Canvas canvas) { for (int i = 0; i < this.d.getChildCount(); i++) { View childAt = this.d.getChildAt(i); if (childAt instanceof TabView) { ((TabView) childAt).a(canvas); } } super.onDraw(canvas); } @Override // android.widget.HorizontalScrollView, android.widget.FrameLayout, android.view.View protected void onMeasure(int i, int i2) { int a = a(getDefaultHeight()) + getPaddingTop() + getPaddingBottom(); int mode = View.MeasureSpec.getMode(i2); if (mode == Integer.MIN_VALUE) { i2 = View.MeasureSpec.makeMeasureSpec(Math.min(a, View.MeasureSpec.getSize(i2)), 1073741824); } else if (mode == 0) { i2 = View.MeasureSpec.makeMeasureSpec(a, 1073741824); } int size = View.MeasureSpec.getSize(i); if (View.MeasureSpec.getMode(i) != 0) { int i3 = this.t; if (i3 <= 0) { i3 = size - a(56); } this.r = i3; } super.onMeasure(i, i2); if (getChildCount() == 1) { boolean z = false; View childAt = getChildAt(0); int i4 = this.A; if (i4 == 0 ? childAt.getMeasuredWidth() < getMeasuredWidth() : !(i4 != 1 || childAt.getMeasuredWidth() == getMeasuredWidth())) { z = true; } if (z) { childAt.measure(View.MeasureSpec.makeMeasureSpec(getMeasuredWidth(), 1073741824), HorizontalScrollView.getChildMeasureSpec(i2, getPaddingTop() + getPaddingBottom(), childAt.getLayoutParams().height)); } } } public void setInlineLabel(boolean z) { if (this.B != z) { this.B = z; for (int i = 0; i < this.d.getChildCount(); i++) { View childAt = this.d.getChildAt(i); if (childAt instanceof TabView) { ((TabView) childAt).c(); } } e(); } } public void setInlineLabelResource(int i) { setInlineLabel(getResources().getBoolean(i)); } @Deprecated public void setOnTabSelectedListener(BaseOnTabSelectedListener baseOnTabSelectedListener) { BaseOnTabSelectedListener baseOnTabSelectedListener2 = this.E; if (baseOnTabSelectedListener2 != null) { b(baseOnTabSelectedListener2); } this.E = baseOnTabSelectedListener; if (baseOnTabSelectedListener != null) { a(baseOnTabSelectedListener); } } void setScrollAnimatorListener(Animator.AnimatorListener animatorListener) { g(); this.H.addListener(animatorListener); } public void setSelectedTabIndicator(Drawable drawable) { if (this.m != drawable) { this.m = drawable; ViewCompat.A(this.d); } } public void setSelectedTabIndicatorColor(int i) { this.d.a(i); } public void setSelectedTabIndicatorGravity(int i) { if (this.z != i) { this.z = i; ViewCompat.A(this.d); } } @Deprecated public void setSelectedTabIndicatorHeight(int i) { this.d.b(i); } public void setTabGravity(int i) { if (this.x != i) { this.x = i; e(); } } public void setTabIconTint(ColorStateList colorStateList) { if (this.k != colorStateList) { this.k = colorStateList; h(); } } public void setTabIconTintResource(int i) { setTabIconTint(AppCompatResources.b(getContext(), i)); } public void setTabIndicatorFullWidth(boolean z) { this.C = z; ViewCompat.A(this.d); } public void setTabMode(int i) { if (i != this.A) { this.A = i; e(); } } public void setTabRippleColor(ColorStateList colorStateList) { if (this.l != colorStateList) { this.l = colorStateList; for (int i = 0; i < this.d.getChildCount(); i++) { View childAt = this.d.getChildAt(i); if (childAt instanceof TabView) { ((TabView) childAt).a(getContext()); } } } } public void setTabRippleColorResource(int i) { setTabRippleColor(AppCompatResources.b(getContext(), i)); } public void setTabTextColors(ColorStateList colorStateList) { if (this.j != colorStateList) { this.j = colorStateList; h(); } } @Deprecated public void setTabsFromPagerAdapter(PagerAdapter pagerAdapter) { a(pagerAdapter, false); } public void setUnboundedRipple(boolean z) { if (this.D != z) { this.D = z; for (int i = 0; i < this.d.getChildCount(); i++) { View childAt = this.d.getChildAt(i); if (childAt instanceof TabView) { ((TabView) childAt).a(getContext()); } } } } public void setUnboundedRippleResource(int i) { setUnboundedRipple(getResources().getBoolean(i)); } public void setupWithViewPager(ViewPager viewPager) { a(viewPager, true); } @Override // android.widget.HorizontalScrollView, android.widget.FrameLayout, android.view.ViewGroup public boolean shouldDelayChildPressedState() { return getTabScrollRange() > 0; } private class AdapterChangeListener implements ViewPager.OnAdapterChangeListener { private boolean a; AdapterChangeListener() { } @Override // androidx.viewpager.widget.ViewPager.OnAdapterChangeListener public void a(ViewPager viewPager, PagerAdapter pagerAdapter, PagerAdapter pagerAdapter2) { TabLayout tabLayout = TabLayout.this; if (tabLayout.I == viewPager) { tabLayout.a(pagerAdapter2, this.a); } } void a(boolean z) { this.a = z; } } public TabLayout(Context context, AttributeSet attributeSet) { this(context, attributeSet, R$attr.tabStyle); } public void a(int i, float f, boolean z) { a(i, f, z, true); } @Override // android.widget.HorizontalScrollView, android.view.ViewGroup public void addView(View view, int i) { a(view); } public Tab b() { Tab a = a(); a.g = this; a.h = e(a); return a; } @Override // android.widget.FrameLayout, android.view.ViewGroup public FrameLayout.LayoutParams generateLayoutParams(AttributeSet attributeSet) { return generateDefaultLayoutParams(); } private class SlidingTabIndicator extends LinearLayout { private int a; private final Paint b; private final GradientDrawable c; int d; float e; private int f; private int g; private int h; private ValueAnimator i; SlidingTabIndicator(Context context) { super(context); this.d = -1; this.f = -1; this.g = -1; this.h = -1; setWillNotDraw(false); this.b = new Paint(); this.c = new GradientDrawable(); } void a(int i) { if (this.b.getColor() != i) { this.b.setColor(i); ViewCompat.A(this); } } void b(int i) { if (this.a != i) { this.a = i; ViewCompat.A(this); } } @Override // android.view.View public void draw(Canvas canvas) { Drawable drawable = TabLayout.this.m; int i = 0; int intrinsicHeight = drawable != null ? drawable.getIntrinsicHeight() : 0; int i2 = this.a; if (i2 >= 0) { intrinsicHeight = i2; } int i3 = TabLayout.this.z; if (i3 == 0) { i = getHeight() - intrinsicHeight; intrinsicHeight = getHeight(); } else if (i3 == 1) { i = (getHeight() - intrinsicHeight) / 2; intrinsicHeight = (getHeight() + intrinsicHeight) / 2; } else if (i3 != 2) { intrinsicHeight = i3 != 3 ? 0 : getHeight(); } int i4 = this.g; if (i4 >= 0 && this.h > i4) { Drawable drawable2 = TabLayout.this.m; if (drawable2 == null) { drawable2 = this.c; } Drawable h = DrawableCompat.h(drawable2); h.setBounds(this.g, i, this.h, intrinsicHeight); Paint paint = this.b; if (paint != null) { if (Build.VERSION.SDK_INT == 21) { h.setColorFilter(paint.getColor(), PorterDuff.Mode.SRC_IN); } else { DrawableCompat.b(h, paint.getColor()); } } h.draw(canvas); } super.draw(canvas); } @Override // android.widget.LinearLayout, android.view.ViewGroup, android.view.View protected void onLayout(boolean z, int i, int i2, int i3, int i4) { super.onLayout(z, i, i2, i3, i4); ValueAnimator valueAnimator = this.i; if (valueAnimator == null || !valueAnimator.isRunning()) { b(); return; } this.i.cancel(); a(this.d, Math.round((1.0f - this.i.getAnimatedFraction()) * this.i.getDuration())); } @Override // android.widget.LinearLayout, android.view.View protected void onMeasure(int i, int i2) { super.onMeasure(i, i2); if (View.MeasureSpec.getMode(i) != 1073741824) { return; } TabLayout tabLayout = TabLayout.this; boolean z = true; if (tabLayout.A == 1 && tabLayout.x == 1) { int childCount = getChildCount(); int i3 = 0; for (int i4 = 0; i4 < childCount; i4++) { View childAt = getChildAt(i4); if (childAt.getVisibility() == 0) { i3 = Math.max(i3, childAt.getMeasuredWidth()); } } if (i3 <= 0) { return; } if (i3 * childCount <= getMeasuredWidth() - (TabLayout.this.a(16) * 2)) { boolean z2 = false; for (int i5 = 0; i5 < childCount; i5++) { LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) getChildAt(i5).getLayoutParams(); if (layoutParams.width != i3 || layoutParams.weight != 0.0f) { layoutParams.width = i3; layoutParams.weight = 0.0f; z2 = true; } } z = z2; } else { TabLayout tabLayout2 = TabLayout.this; tabLayout2.x = 0; tabLayout2.a(false); } if (z) { super.onMeasure(i, i2); } } } @Override // android.widget.LinearLayout, android.view.View public void onRtlPropertiesChanged(int i) { super.onRtlPropertiesChanged(i); if (Build.VERSION.SDK_INT >= 23 || this.f == i) { return; } requestLayout(); this.f = i; } private void b() { int i; int i2; View childAt = getChildAt(this.d); if (childAt == null || childAt.getWidth() <= 0) { i = -1; i2 = -1; } else { i = childAt.getLeft(); i2 = childAt.getRight(); TabLayout tabLayout = TabLayout.this; if (!tabLayout.C && (childAt instanceof TabView)) { a((TabView) childAt, tabLayout.c); i = (int) TabLayout.this.c.left; i2 = (int) TabLayout.this.c.right; } if (this.e > 0.0f && this.d < getChildCount() - 1) { View childAt2 = getChildAt(this.d + 1); int left = childAt2.getLeft(); int right = childAt2.getRight(); TabLayout tabLayout2 = TabLayout.this; if (!tabLayout2.C && (childAt2 instanceof TabView)) { a((TabView) childAt2, tabLayout2.c); left = (int) TabLayout.this.c.left; right = (int) TabLayout.this.c.right; } float f = this.e; i = (int) ((left * f) + ((1.0f - f) * i)); i2 = (int) ((right * f) + ((1.0f - f) * i2)); } } b(i, i2); } boolean a() { int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { if (getChildAt(i).getWidth() <= 0) { return true; } } return false; } void a(int i, float f) { ValueAnimator valueAnimator = this.i; if (valueAnimator != null && valueAnimator.isRunning()) { this.i.cancel(); } this.d = i; this.e = f; b(); } void a(final int i, int i2) { ValueAnimator valueAnimator = this.i; if (valueAnimator != null && valueAnimator.isRunning()) { this.i.cancel(); } View childAt = getChildAt(i); if (childAt == null) { b(); return; } int left = childAt.getLeft(); int right = childAt.getRight(); TabLayout tabLayout = TabLayout.this; if (!tabLayout.C && (childAt instanceof TabView)) { a((TabView) childAt, tabLayout.c); left = (int) TabLayout.this.c.left; right = (int) TabLayout.this.c.right; } final int i3 = left; final int i4 = right; final int i5 = this.g; final int i6 = this.h; if (i5 == i3 && i6 == i4) { return; } ValueAnimator valueAnimator2 = new ValueAnimator(); this.i = valueAnimator2; valueAnimator2.setInterpolator(AnimationUtils.b); valueAnimator2.setDuration(i2); valueAnimator2.setFloatValues(0.0f, 1.0f); valueAnimator2.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // from class: com.google.android.material.tabs.TabLayout.SlidingTabIndicator.1 @Override // android.animation.ValueAnimator.AnimatorUpdateListener public void onAnimationUpdate(ValueAnimator valueAnimator3) { float animatedFraction = valueAnimator3.getAnimatedFraction(); SlidingTabIndicator.this.b(AnimationUtils.a(i5, i3, animatedFraction), AnimationUtils.a(i6, i4, animatedFraction)); } }); valueAnimator2.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.tabs.TabLayout.SlidingTabIndicator.2 @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener public void onAnimationEnd(Animator animator) { SlidingTabIndicator slidingTabIndicator = SlidingTabIndicator.this; slidingTabIndicator.d = i; slidingTabIndicator.e = 0.0f; } }); valueAnimator2.start(); } void b(int i, int i2) { if (i == this.g && i2 == this.h) { return; } this.g = i; this.h = i2; ViewCompat.A(this); } private void a(TabView tabView, RectF rectF) { int d = tabView.d(); if (d < TabLayout.this.a(24)) { d = TabLayout.this.a(24); } int left = (tabView.getLeft() + tabView.getRight()) / 2; int i = d / 2; rectF.set(left - i, 0.0f, left + i, 0.0f); } } public TabLayout(Context context, AttributeSet attributeSet, int i) { super(context, attributeSet, i); this.a = new ArrayList<>(); this.c = new RectF(); this.r = Integer.MAX_VALUE; this.F = new ArrayList<>(); this.O = new Pools$SimplePool(12); setHorizontalScrollBarEnabled(false); this.d = new SlidingTabIndicator(context); super.addView(this.d, 0, new FrameLayout.LayoutParams(-2, -1)); TypedArray c = ThemeEnforcement.c(context, attributeSet, R$styleable.TabLayout, i, R$style.Widget_Design_TabLayout, R$styleable.TabLayout_tabTextAppearance); this.d.b(c.getDimensionPixelSize(R$styleable.TabLayout_tabIndicatorHeight, -1)); this.d.a(c.getColor(R$styleable.TabLayout_tabIndicatorColor, 0)); setSelectedTabIndicator(MaterialResources.b(context, c, R$styleable.TabLayout_tabIndicator)); setSelectedTabIndicatorGravity(c.getInt(R$styleable.TabLayout_tabIndicatorGravity, 0)); setTabIndicatorFullWidth(c.getBoolean(R$styleable.TabLayout_tabIndicatorFullWidth, true)); int dimensionPixelSize = c.getDimensionPixelSize(R$styleable.TabLayout_tabPadding, 0); this.h = dimensionPixelSize; this.g = dimensionPixelSize; this.f = dimensionPixelSize; this.e = dimensionPixelSize; this.e = c.getDimensionPixelSize(R$styleable.TabLayout_tabPaddingStart, this.e); this.f = c.getDimensionPixelSize(R$styleable.TabLayout_tabPaddingTop, this.f); this.g = c.getDimensionPixelSize(R$styleable.TabLayout_tabPaddingEnd, this.g); this.h = c.getDimensionPixelSize(R$styleable.TabLayout_tabPaddingBottom, this.h); this.i = c.getResourceId(R$styleable.TabLayout_tabTextAppearance, R$style.TextAppearance_Design_Tab); TypedArray obtainStyledAttributes = context.obtainStyledAttributes(this.i, androidx.appcompat.R$styleable.TextAppearance); try { this.o = obtainStyledAttributes.getDimensionPixelSize(androidx.appcompat.R$styleable.TextAppearance_android_textSize, 0); this.j = MaterialResources.a(context, obtainStyledAttributes, androidx.appcompat.R$styleable.TextAppearance_android_textColor); obtainStyledAttributes.recycle(); if (c.hasValue(R$styleable.TabLayout_tabTextColor)) { this.j = MaterialResources.a(context, c, R$styleable.TabLayout_tabTextColor); } if (c.hasValue(R$styleable.TabLayout_tabSelectedTextColor)) { this.j = a(this.j.getDefaultColor(), c.getColor(R$styleable.TabLayout_tabSelectedTextColor, 0)); } this.k = MaterialResources.a(context, c, R$styleable.TabLayout_tabIconTint); this.n = ViewUtils.a(c.getInt(R$styleable.TabLayout_tabIconTintMode, -1), null); this.l = MaterialResources.a(context, c, R$styleable.TabLayout_tabRippleColor); this.y = c.getInt(R$styleable.TabLayout_tabIndicatorAnimationDuration, 300); this.s = c.getDimensionPixelSize(R$styleable.TabLayout_tabMinWidth, -1); this.t = c.getDimensionPixelSize(R$styleable.TabLayout_tabMaxWidth, -1); this.q = c.getResourceId(R$styleable.TabLayout_tabBackground, 0); this.v = c.getDimensionPixelSize(R$styleable.TabLayout_tabContentStart, 0); this.A = c.getInt(R$styleable.TabLayout_tabMode, 1); this.x = c.getInt(R$styleable.TabLayout_tabGravity, 0); this.B = c.getBoolean(R$styleable.TabLayout_tabInlineLabel, false); this.D = c.getBoolean(R$styleable.TabLayout_tabUnboundedRipple, false); c.recycle(); Resources resources = getResources(); this.p = resources.getDimensionPixelSize(R$dimen.design_tab_text_size_2line); this.u = resources.getDimensionPixelSize(R$dimen.design_tab_scrollable_min_width); e(); } catch (Throwable th) { obtainStyledAttributes.recycle(); throw th; } } private void f(Tab tab) { for (int size = this.F.size() - 1; size >= 0; size--) { this.F.get(size).onTabReselected(tab); } } private void h(Tab tab) { for (int size = this.F.size() - 1; size >= 0; size--) { this.F.get(size).onTabUnselected(tab); } } void a(int i, float f, boolean z, boolean z2) { int round = Math.round(i + f); if (round < 0 || round >= this.d.getChildCount()) { return; } if (z2) { this.d.a(i, f); } ValueAnimator valueAnimator = this.H; if (valueAnimator != null && valueAnimator.isRunning()) { this.H.cancel(); } scrollTo(a(i, f), 0); if (z) { setSelectedTabView(round); } } @Override // android.widget.HorizontalScrollView, android.view.ViewGroup, android.view.ViewManager public void addView(View view, ViewGroup.LayoutParams layoutParams) { a(view); } @Override // android.widget.HorizontalScrollView, android.view.ViewGroup public void addView(View view, int i, ViewGroup.LayoutParams layoutParams) { a(view); } public void setSelectedTabIndicator(int i) { if (i != 0) { setSelectedTabIndicator(AppCompatResources.c(getContext(), i)); } else { setSelectedTabIndicator((Drawable) null); } } protected boolean b(Tab tab) { return P.a(tab); } private void g(Tab tab) { for (int size = this.F.size() - 1; size >= 0; size--) { this.F.get(size).onTabSelected(tab); } } public Tab b(int i) { if (i < 0 || i >= getTabCount()) { return null; } return this.a.get(i); } private void b(Tab tab, int i) { tab.b(i); this.a.add(i, tab); int size = this.a.size(); while (true) { i++; if (i >= size) { return; } else { this.a.get(i).b(i); } } } private void c(int i) { if (i == -1) { return; } if (getWindowToken() != null && ViewCompat.x(this) && !this.d.a()) { int scrollX = getScrollX(); int a = a(i, 0.0f); if (scrollX != a) { g(); this.H.setIntValues(scrollX, a); this.H.start(); } this.d.a(i, this.y); return; } a(i, 0.0f, true); } private void d(Tab tab) { this.d.addView(tab.h, tab.c(), f()); } private void e() { ViewCompat.a(this.d, this.A == 0 ? Math.max(0, this.v - this.e) : 0, 0, 0, 0); int i = this.A; if (i == 0) { this.d.setGravity(8388611); } else if (i == 1) { this.d.setGravity(1); } a(true); } public void a(Tab tab) { a(tab, this.a.isEmpty()); } private void d(int i) { TabView tabView = (TabView) this.d.getChildAt(i); this.d.removeViewAt(i); if (tabView != null) { tabView.a(); this.O.a(tabView); } requestLayout(); } public void a(Tab tab, int i) { a(tab, i, this.a.isEmpty()); } void b(Tab tab, boolean z) { Tab tab2 = this.b; if (tab2 == tab) { if (tab2 != null) { f(tab); c(tab.c()); return; } return; } int c = tab != null ? tab.c() : -1; if (z) { if ((tab2 == null || tab2.c() == -1) && c != -1) { a(c, 0.0f, true); } else { c(c); } if (c != -1) { setSelectedTabView(c); } } this.b = tab; if (tab2 != null) { h(tab2); } if (tab != null) { g(tab); } } public void a(Tab tab, boolean z) { a(tab, this.a.size(), z); } public void a(Tab tab, int i, boolean z) { if (tab.g == this) { b(tab, i); d(tab); if (z) { tab.h(); return; } return; } throw new IllegalArgumentException("Tab belongs to a different TabLayout."); } private void a(TabItem tabItem) { Tab b = b(); CharSequence charSequence = tabItem.a; if (charSequence != null) { b.b(charSequence); } Drawable drawable = tabItem.b; if (drawable != null) { b.a(drawable); } int i = tabItem.c; if (i != 0) { b.a(i); } if (!TextUtils.isEmpty(tabItem.getContentDescription())) { b.a(tabItem.getContentDescription()); } a(b); } void c(Tab tab) { b(tab, true); } public void a(BaseOnTabSelectedListener baseOnTabSelectedListener) { if (this.F.contains(baseOnTabSelectedListener)) { return; } this.F.add(baseOnTabSelectedListener); } protected Tab a() { Tab a = P.a(); return a == null ? new Tab() : a; } public void a(ViewPager viewPager, boolean z) { a(viewPager, z, false); } private void a(ViewPager viewPager, boolean z, boolean z2) { ViewPager viewPager2 = this.I; if (viewPager2 != null) { TabLayoutOnPageChangeListener tabLayoutOnPageChangeListener = this.L; if (tabLayoutOnPageChangeListener != null) { viewPager2.b(tabLayoutOnPageChangeListener); } AdapterChangeListener adapterChangeListener = this.M; if (adapterChangeListener != null) { this.I.b(adapterChangeListener); } } BaseOnTabSelectedListener baseOnTabSelectedListener = this.G; if (baseOnTabSelectedListener != null) { b(baseOnTabSelectedListener); this.G = null; } if (viewPager != null) { this.I = viewPager; if (this.L == null) { this.L = new TabLayoutOnPageChangeListener(this); } this.L.a(); viewPager.a(this.L); this.G = new ViewPagerOnTabSelectedListener(viewPager); a(this.G); PagerAdapter adapter = viewPager.getAdapter(); if (adapter != null) { a(adapter, z); } if (this.M == null) { this.M = new AdapterChangeListener(); } this.M.a(z); viewPager.a(this.M); a(viewPager.getCurrentItem(), 0.0f, true); } else { this.I = null; a((PagerAdapter) null, false); } this.N = z2; } void a(PagerAdapter pagerAdapter, boolean z) { DataSetObserver dataSetObserver; PagerAdapter pagerAdapter2 = this.J; if (pagerAdapter2 != null && (dataSetObserver = this.K) != null) { pagerAdapter2.unregisterDataSetObserver(dataSetObserver); } this.J = pagerAdapter; if (z && pagerAdapter != null) { if (this.K == null) { this.K = new PagerAdapterObserver(); } pagerAdapter.registerDataSetObserver(this.K); } c(); } private void a(View view) { if (view instanceof TabItem) { a((TabItem) view); return; } throw new IllegalArgumentException("Only TabItem instances can be added to TabLayout"); } private void a(LinearLayout.LayoutParams layoutParams) { if (this.A == 1 && this.x == 0) { layoutParams.width = 0; layoutParams.weight = 1.0f; } else { layoutParams.width = -2; layoutParams.weight = 0.0f; } } int a(int i) { return Math.round(getResources().getDisplayMetrics().density * i); } private int a(int i, float f) { if (this.A != 0) { return 0; } View childAt = this.d.getChildAt(i); int i2 = i + 1; View childAt2 = i2 < this.d.getChildCount() ? this.d.getChildAt(i2) : null; int width = childAt != null ? childAt.getWidth() : 0; int width2 = childAt2 != null ? childAt2.getWidth() : 0; int left = (childAt.getLeft() + (width / 2)) - (getWidth() / 2); int i3 = (int) ((width + width2) * 0.5f * f); return ViewCompat.k(this) == 0 ? left + i3 : left - i3; } void a(boolean z) { for (int i = 0; i < this.d.getChildCount(); i++) { View childAt = this.d.getChildAt(i); childAt.setMinimumWidth(getTabMinWidth()); a((LinearLayout.LayoutParams) childAt.getLayoutParams()); if (z) { childAt.requestLayout(); } } } private static ColorStateList a(int i, int i2) { return new ColorStateList(new int[][]{HorizontalScrollView.SELECTED_STATE_SET, HorizontalScrollView.EMPTY_STATE_SET}, new int[]{i2, i}); } }