获取menu里面的布局到新的布局中

根据需求我们定义了三个menu,但是在代码中如何获取定义好的menu到自定义的布局中呢?

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:icon="@drawable/home_discover_selected"
        android:title="@string/menu_1" />
    <item
        android:icon="@drawable/home_project_selected"
        android:title="@string/menu_2" />
    <item
        android:icon="@drawable/home_investor_selected"
        android:title="@string/menu_3" />
</menu>

创建一个item类,承装这个menu个体

class MenuItem {
    protected int iconResource;
    private String title;
    private Drawable imageResource;
    private int id;
    public MenuItem(String title, Drawable imageResource) {
        this.title = title;
        this.imageResource = imageResource;
    }
    protected Drawable getIcon(Context context) {
        if (this.iconResource != 0) {
            return ContextCompat.getDrawable(context, this.iconResource);
        } else {
            return this.imageResource;
        }
    }
}

接下来就获取menu里面的icon和text了

public MenuItem[] setItemsFromMenu(Activity activity,@MenuRes int menuRes) {
    PopupMenu popupMenu = new PopupMenu(activity, null);
        Menu menu = popupMenu.getMenu();
        activity.getMenuInflater().inflate(menuRes, menu);
        int menuSize = menu.size();
        MenuItem[] tabs = new MenuItem[menuSize];
        for (int i = 0; i < menuSize; i++) {
            MenuItem item = menu.getItem(i);
            MenuItem tab = new MenuItem(String.valueOf(item.getTitle()),item.getIcon());
            tabs[i] = tab;
        }
        return tabs;
    }

我们已经把menu定义的icon和text放到MenuItem[]里面了,这样就能根据自己的需求获取相关的icon和txt放到自己定义的layout了,举个例子

LinearLayout items = new LinearLayout(context);
for (int i = 0; i < MenuItems.length(); i++) {
    MenuItem item = MenuItems[i];
    final View view = inflater.inflate(R.layout.bottom_navigation, this, false);
    ImageView icon = (ImageView) view.findViewById(R.id.item_icon);
    TextView title = (TextView) view.findViewById(R.id.item_title);
    icon.setImageDrawable(item.getIcon(context));
    title.setText(item.getTitle());
    items.addView(view);
}

猜你喜欢

转载自blog.csdn.net/lumin1914/article/details/51084749
今日推荐