public final class

ExpandedMenuView

extends ListView

implements MenuBuilder.ItemInvoker, MenuView

 java.lang.Object

↳ListView

↳androidx.appcompat.view.menu.ExpandedMenuView

Gradle dependencies

compile group: 'androidx.appcompat', name: 'appcompat', version: '1.7.0'

  • groupId: androidx.appcompat
  • artifactId: appcompat
  • version: 1.7.0

Artifact androidx.appcompat:appcompat:1.7.0 it located at Google repository (https://maven.google.com/)

Androidx artifact mapping:

androidx.appcompat:appcompat com.android.support:appcompat-v7

Androidx class mapping:

androidx.appcompat.view.menu.ExpandedMenuView android.support.v7.view.menu.ExpandedMenuView

Overview

The expanded menu view is a list-like menu with all of the available menu items. It is opened by the user clicking no the 'More' button on the icon menu view.

Summary

Constructors
publicExpandedMenuView(Context context, AttributeSet attrs)

publicExpandedMenuView(Context context, AttributeSet attrs, int defStyleAttr)

Methods
public intgetWindowAnimations()

public voidinitialize(MenuBuilder menu)

public booleaninvokeItem(MenuItemImpl item)

protected voidonDetachedFromWindow()

public voidonItemClick(AdapterView parent, View v, int position, long id)

from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructors

public ExpandedMenuView(Context context, AttributeSet attrs)

public ExpandedMenuView(Context context, AttributeSet attrs, int defStyleAttr)

Methods

public void initialize(MenuBuilder menu)

protected void onDetachedFromWindow()

public boolean invokeItem(MenuItemImpl item)

public void onItemClick(AdapterView parent, View v, int position, long id)

public int getWindowAnimations()

Source

/*
 * Copyright (C) 2013 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package androidx.appcompat.view.menu;

import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

import androidx.annotation.RestrictTo;
import androidx.appcompat.view.menu.MenuBuilder.ItemInvoker;
import androidx.appcompat.widget.TintTypedArray;

/**
 * The expanded menu view is a list-like menu with all of the available menu items.  It is opened
 * by the user clicking no the 'More' button on the icon menu view.
 *
 */
@RestrictTo(LIBRARY_GROUP_PREFIX)
public final class ExpandedMenuView extends ListView
        implements ItemInvoker, MenuView, OnItemClickListener {

    private static final int[] TINT_ATTRS = {
            android.R.attr.background,
            android.R.attr.divider
    };

    private MenuBuilder mMenu;

    /** Default animations for this menu */
    private int mAnimations;

    public ExpandedMenuView(Context context, AttributeSet attrs) {
        this(context, attrs, android.R.attr.listViewStyle);
    }

    public ExpandedMenuView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs);
        setOnItemClickListener(this);

        TintTypedArray a = TintTypedArray.obtainStyledAttributes(context, attrs, TINT_ATTRS,
                defStyleAttr, 0);
        if (a.hasValue(0)) {
            setBackgroundDrawable(a.getDrawable(0));
        }
        if (a.hasValue(1)) {
            setDivider(a.getDrawable(1));
        }
        a.recycle();
    }

    @Override
    public void initialize(MenuBuilder menu) {
        mMenu = menu;
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();

        // Clear the cached bitmaps of children
        setChildrenDrawingCacheEnabled(false);
    }

    @Override
    public boolean invokeItem(MenuItemImpl item) {
        return mMenu.performItemAction(item, 0);
    }

    @Override
    @SuppressWarnings("rawtypes")
    public void onItemClick(AdapterView parent, View v, int position, long id) {
        invokeItem((MenuItemImpl) getAdapter().getItem(position));
    }

    @Override
    public int getWindowAnimations() {
        return mAnimations;
    }

}