单击菜单上的切换图像

时间:2018-04-08 09:23:37

标签: android

我有一个带图像的菜单,想要将我片段上的另一个imageView更改为点击的Menuitem中的图像。 在片刻,我将图像更改为第一个,因为我不知道如何处理没有id的情况。当你帮助我给他们一个id或任何其他解决方案时,会很高兴。

 public class OneFragment extends Fragment {

        HorizontalScrollMenuView menu;
        ImageView imageView;


        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_one, container, false);

            menu = (HorizontalScrollMenuView)view.findViewById(R.id.menu);
            imageView =(ImageView)view.findViewById(R.id.imageView);


            initMenu();


            return view;
        }



        private void initMenu() {
            menu.addItem("One",R.drawable.ic_one);
            menu.addItem("Two",R.drawable.ic_two);
            menu.addItem("Three",R.drawable.ic_three);
            menu.addItem("Four",R.drawable.ic_four);
            menu.addItem("Five",R.drawable.ic_five);


            menu.setOnHSMenuClickListener(new HorizontalScrollMenuView.OnHSMenuClickListener() {
                @Override
                public void onHSMClick(MenuItem menuItem, int position) {

                    imageView.setImageResource(R.drawable.**`This should be the Icon from selected Menuitem`**);

                }
            });

        }
    }

1 个答案:

答案 0 :(得分:0)

现在尝试这个更新的课程

这应该可以正常使用,试试这个,如果您有任何疑问,请告诉我

 public class OneFragment extends Fragment {

    HorizontalScrollMenuView menu;
    ImageView imageView;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_one, container, false);

        menu = (HorizontalScrollMenuView)view.findViewById(R.id.menu);
        imageView =(ImageView)view.findViewById(R.id.imageView);


        initMenu();


        return view;
    }
    class MyMenu {
        public String title;
        public int imageRes;

        public MyMenu(String title, int imageRes) {
            this.title = title;
            this.imageRes = imageRes;
        }
    }

    private void initMenu() {
            List<MyMenu> myMenus = new ArrayList<>();
            myMenus.add(new MyMenu("One", R.drawable.ic_one));
            myMenus.add(new MyMenu("Two", R.drawable.ic_two));
            myMenus.add(new MyMenu("Three", R.drawable.ic_three));
            myMenus.add(new MyMenu("Four", R.drawable.ic_four));
            myMenus.add(new MyMenu("Five", R.drawable.ic_five));

            for (MyMenu myMenu: myMenus) {
                menu.addItem(myMenu.title,myMenu.imageRes);
            }


        menu.setOnHSMenuClickListener(new HorizontalScrollMenuView.OnHSMenuClickListener() {
            @Override
            public void onHSMClick(MenuItem menuItem, int position) {

              imageView.setImageResource(myMenus.get(position).imageRes);

            }
        });

    }
}

<强>更新

另一种方法:

你应该试试这个并检查getIcon()是否运行良好 如果工作正常,这只是一个最小的解决方案,只需更改点击监听器

        menu.setOnHSMenuClickListener(new HorizontalScrollMenuView.OnHSMenuClickListener() {
            @Override
            public void onHSMClick(MenuItem menuItem, int position) {
        if (menu.getItem(position).getIcon() != null)
            imageView.setImageDrawable(menu.getItem(position).getIcon());

            }
        });

在这种方法中不需要MyMenu类(由@Code-Apprentice提出的观点)