266 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			266 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package com.google.android.material.internal;
 | |
| 
 | |
| import android.R;
 | |
| import android.content.Context;
 | |
| import android.content.res.ColorStateList;
 | |
| import android.graphics.drawable.ColorDrawable;
 | |
| import android.graphics.drawable.Drawable;
 | |
| import android.graphics.drawable.StateListDrawable;
 | |
| import android.util.AttributeSet;
 | |
| import android.util.TypedValue;
 | |
| import android.view.LayoutInflater;
 | |
| import android.view.View;
 | |
| import android.view.ViewGroup;
 | |
| import android.view.ViewStub;
 | |
| import android.widget.CheckedTextView;
 | |
| import android.widget.FrameLayout;
 | |
| import androidx.appcompat.view.menu.MenuItemImpl;
 | |
| import androidx.appcompat.view.menu.MenuView;
 | |
| import androidx.appcompat.widget.LinearLayoutCompat;
 | |
| import androidx.appcompat.widget.TooltipCompat;
 | |
| import androidx.core.content.res.ResourcesCompat;
 | |
| import androidx.core.graphics.drawable.DrawableCompat;
 | |
| import androidx.core.view.AccessibilityDelegateCompat;
 | |
| import androidx.core.view.ViewCompat;
 | |
| import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
 | |
| import androidx.core.widget.TextViewCompat;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public class NavigationMenuItemView extends ForegroundLinearLayout implements MenuView.ItemView {
 | |
|     private static final int[] CHECKED_STATE_SET = {R.attr.state_checked};
 | |
|     private final AccessibilityDelegateCompat accessibilityDelegate;
 | |
|     private FrameLayout actionArea;
 | |
|     boolean checkable;
 | |
|     private Drawable emptyDrawable;
 | |
|     private boolean hasIconTintList;
 | |
|     private int iconSize;
 | |
|     private ColorStateList iconTintList;
 | |
|     boolean isBold;
 | |
|     private MenuItemImpl itemData;
 | |
|     private boolean needsEmptyIcon;
 | |
|     private final CheckedTextView textView;
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public MenuItemImpl getItemData() {
 | |
|         return this.itemData;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public boolean prefersCondensedTitle() {
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     public void setIconSize(int i) {
 | |
|         this.iconSize = i;
 | |
|     }
 | |
| 
 | |
|     public void setNeedsEmptyIcon(boolean z) {
 | |
|         this.needsEmptyIcon = z;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public void setShortcut(boolean z, char c) {
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public boolean showsIcon() {
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     public NavigationMenuItemView(Context context) {
 | |
|         this(context, null);
 | |
|     }
 | |
| 
 | |
|     public NavigationMenuItemView(Context context, AttributeSet attributeSet) {
 | |
|         this(context, attributeSet, 0);
 | |
|     }
 | |
| 
 | |
|     public NavigationMenuItemView(Context context, AttributeSet attributeSet, int i) {
 | |
|         super(context, attributeSet, i);
 | |
|         this.isBold = true;
 | |
|         AccessibilityDelegateCompat accessibilityDelegateCompat = new AccessibilityDelegateCompat() { // from class: com.google.android.material.internal.NavigationMenuItemView.1
 | |
|             @Override // androidx.core.view.AccessibilityDelegateCompat
 | |
|             public void onInitializeAccessibilityNodeInfo(View view, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) {
 | |
|                 super.onInitializeAccessibilityNodeInfo(view, accessibilityNodeInfoCompat);
 | |
|                 accessibilityNodeInfoCompat.setCheckable(NavigationMenuItemView.this.checkable);
 | |
|             }
 | |
|         };
 | |
|         this.accessibilityDelegate = accessibilityDelegateCompat;
 | |
|         setOrientation(0);
 | |
|         LayoutInflater.from(context).inflate(com.google.android.material.R.layout.design_navigation_menu_item, (ViewGroup) this, true);
 | |
|         setIconSize(context.getResources().getDimensionPixelSize(com.google.android.material.R.dimen.design_navigation_icon_size));
 | |
|         CheckedTextView checkedTextView = (CheckedTextView) findViewById(com.google.android.material.R.id.design_menu_item_text);
 | |
|         this.textView = checkedTextView;
 | |
|         checkedTextView.setDuplicateParentStateEnabled(true);
 | |
|         ViewCompat.setAccessibilityDelegate(checkedTextView, accessibilityDelegateCompat);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public void initialize(MenuItemImpl menuItemImpl, int i) {
 | |
|         this.itemData = menuItemImpl;
 | |
|         if (menuItemImpl.getItemId() > 0) {
 | |
|             setId(menuItemImpl.getItemId());
 | |
|         }
 | |
|         setVisibility(menuItemImpl.isVisible() ? 0 : 8);
 | |
|         if (getBackground() == null) {
 | |
|             ViewCompat.setBackground(this, createDefaultBackground());
 | |
|         }
 | |
|         setCheckable(menuItemImpl.isCheckable());
 | |
|         setChecked(menuItemImpl.isChecked());
 | |
|         setEnabled(menuItemImpl.isEnabled());
 | |
|         setTitle(menuItemImpl.getTitle());
 | |
|         setIcon(menuItemImpl.getIcon());
 | |
|         setActionView(menuItemImpl.getActionView());
 | |
|         setContentDescription(menuItemImpl.getContentDescription());
 | |
|         TooltipCompat.setTooltipText(this, menuItemImpl.getTooltipText());
 | |
|         adjustAppearance();
 | |
|     }
 | |
| 
 | |
|     public void initialize(MenuItemImpl menuItemImpl, boolean z) {
 | |
|         this.isBold = z;
 | |
|         initialize(menuItemImpl, 0);
 | |
|     }
 | |
| 
 | |
|     private boolean shouldExpandActionArea() {
 | |
|         return this.itemData.getTitle() == null && this.itemData.getIcon() == null && this.itemData.getActionView() != null;
 | |
|     }
 | |
| 
 | |
|     private void adjustAppearance() {
 | |
|         if (shouldExpandActionArea()) {
 | |
|             this.textView.setVisibility(8);
 | |
|             FrameLayout frameLayout = this.actionArea;
 | |
|             if (frameLayout != null) {
 | |
|                 LinearLayoutCompat.LayoutParams layoutParams = (LinearLayoutCompat.LayoutParams) frameLayout.getLayoutParams();
 | |
|                 layoutParams.width = -1;
 | |
|                 this.actionArea.setLayoutParams(layoutParams);
 | |
|                 return;
 | |
|             }
 | |
|             return;
 | |
|         }
 | |
|         this.textView.setVisibility(0);
 | |
|         FrameLayout frameLayout2 = this.actionArea;
 | |
|         if (frameLayout2 != null) {
 | |
|             LinearLayoutCompat.LayoutParams layoutParams2 = (LinearLayoutCompat.LayoutParams) frameLayout2.getLayoutParams();
 | |
|             layoutParams2.width = -2;
 | |
|             this.actionArea.setLayoutParams(layoutParams2);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void recycle() {
 | |
|         FrameLayout frameLayout = this.actionArea;
 | |
|         if (frameLayout != null) {
 | |
|             frameLayout.removeAllViews();
 | |
|         }
 | |
|         this.textView.setCompoundDrawables(null, null, null, null);
 | |
|     }
 | |
| 
 | |
|     private void setActionView(View view) {
 | |
|         if (view != null) {
 | |
|             if (this.actionArea == null) {
 | |
|                 this.actionArea = (FrameLayout) ((ViewStub) findViewById(com.google.android.material.R.id.design_menu_item_action_area_stub)).inflate();
 | |
|             }
 | |
|             this.actionArea.removeAllViews();
 | |
|             this.actionArea.addView(view);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private StateListDrawable createDefaultBackground() {
 | |
|         TypedValue typedValue = new TypedValue();
 | |
|         if (!getContext().getTheme().resolveAttribute(androidx.appcompat.R.attr.colorControlHighlight, typedValue, true)) {
 | |
|             return null;
 | |
|         }
 | |
|         StateListDrawable stateListDrawable = new StateListDrawable();
 | |
|         stateListDrawable.addState(CHECKED_STATE_SET, new ColorDrawable(typedValue.data));
 | |
|         stateListDrawable.addState(EMPTY_STATE_SET, new ColorDrawable(0));
 | |
|         return stateListDrawable;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public void setTitle(CharSequence charSequence) {
 | |
|         this.textView.setText(charSequence);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public void setCheckable(boolean z) {
 | |
|         refreshDrawableState();
 | |
|         if (this.checkable != z) {
 | |
|             this.checkable = z;
 | |
|             this.accessibilityDelegate.sendAccessibilityEvent(this.textView, 2048);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public void setChecked(boolean z) {
 | |
|         refreshDrawableState();
 | |
|         this.textView.setChecked(z);
 | |
|         CheckedTextView checkedTextView = this.textView;
 | |
|         checkedTextView.setTypeface(checkedTextView.getTypeface(), (z && this.isBold) ? 1 : 0);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public void setIcon(Drawable drawable) {
 | |
|         if (drawable != null) {
 | |
|             if (this.hasIconTintList) {
 | |
|                 Drawable.ConstantState constantState = drawable.getConstantState();
 | |
|                 if (constantState != null) {
 | |
|                     drawable = constantState.newDrawable();
 | |
|                 }
 | |
|                 drawable = DrawableCompat.wrap(drawable).mutate();
 | |
|                 DrawableCompat.setTintList(drawable, this.iconTintList);
 | |
|             }
 | |
|             int i = this.iconSize;
 | |
|             drawable.setBounds(0, 0, i, i);
 | |
|         } else if (this.needsEmptyIcon) {
 | |
|             if (this.emptyDrawable == null) {
 | |
|                 Drawable drawable2 = ResourcesCompat.getDrawable(getResources(), com.google.android.material.R.drawable.navigation_empty_icon, getContext().getTheme());
 | |
|                 this.emptyDrawable = drawable2;
 | |
|                 if (drawable2 != null) {
 | |
|                     int i2 = this.iconSize;
 | |
|                     drawable2.setBounds(0, 0, i2, i2);
 | |
|                 }
 | |
|             }
 | |
|             drawable = this.emptyDrawable;
 | |
|         }
 | |
|         TextViewCompat.setCompoundDrawablesRelative(this.textView, drawable, null, null, null);
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.ViewGroup, android.view.View
 | |
|     protected int[] onCreateDrawableState(int i) {
 | |
|         int[] onCreateDrawableState = super.onCreateDrawableState(i + 1);
 | |
|         MenuItemImpl menuItemImpl = this.itemData;
 | |
|         if (menuItemImpl != null && menuItemImpl.isCheckable() && this.itemData.isChecked()) {
 | |
|             mergeDrawableStates(onCreateDrawableState, CHECKED_STATE_SET);
 | |
|         }
 | |
|         return onCreateDrawableState;
 | |
|     }
 | |
| 
 | |
|     void setIconTintList(ColorStateList colorStateList) {
 | |
|         this.iconTintList = colorStateList;
 | |
|         this.hasIconTintList = colorStateList != null;
 | |
|         MenuItemImpl menuItemImpl = this.itemData;
 | |
|         if (menuItemImpl != null) {
 | |
|             setIcon(menuItemImpl.getIcon());
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setTextAppearance(int i) {
 | |
|         TextViewCompat.setTextAppearance(this.textView, i);
 | |
|     }
 | |
| 
 | |
|     public void setTextColor(ColorStateList colorStateList) {
 | |
|         this.textView.setTextColor(colorStateList);
 | |
|     }
 | |
| 
 | |
|     public void setHorizontalPadding(int i) {
 | |
|         setPadding(i, getPaddingTop(), i, getPaddingBottom());
 | |
|     }
 | |
| 
 | |
|     public void setIconPadding(int i) {
 | |
|         this.textView.setCompoundDrawablePadding(i);
 | |
|     }
 | |
| 
 | |
|     public void setMaxLines(int i) {
 | |
|         this.textView.setMaxLines(i);
 | |
|     }
 | |
| }
 |