美文网首页
Android 解决MenuItem的间距偏移问题

Android 解决MenuItem的间距偏移问题

作者: FireMark | 来源:发表于2020-08-24 12:20 被阅读0次

    Android系统自带的Menu布局有自己的间距,有时候不会满足GUI的要求,需要对某个图标进行细微的调整,目前只有对自定义的菜单图标进行单独的自定义,具体代码如下:

    在Activity中初始化的ActionMode方法中设置:

     @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
           
            MenuInflater inflater = new MenuInflater(this);
            //将"全选"的菜单按钮初始化于ToolBar上
            inflater.inflate(R.menu.menu_for_edit, menu);
            
            //获取"全选"的菜单按钮
            MenuItem menuItem_select = menu.findItem(R.id.menu_select_all);
            
            //将对应的菜单按钮设置点击事件
            menuItem_select.getActionView().setOnClickListener(v -> {
                menu.performIdentifierAction(menuItem_select.getItemId(),0);
            });
            return true;
        }
    

    点击事件的监听实现:

    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            switch (item.getItemId()){
                case R.id.menu_select_all:
                     //完成自己的逻辑即可
                     doSomething();
                   
                     break;
                default:
                    break;
            }
            return false;
        }
    

    自定义菜单(menu菜单项--R.menu.menu_for_edit)

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <!--设置自定义的布局R.layout.menu_allselect_layout-->
     <item
            android:id="@+id/menu_select_all"
            android:actionLayout="@layout/menu_allselect_layout"
            android:title="@string/label_selectAll" />
    </menu>
    

    自定义布局(菜单的引用R.layout.menu_allselect_layout)的布局

    其中,在对应的ImageView中设置对应的paddingRight值即可

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <ImageView
            android:id="@+id/dialer_menu_select_img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingRight="20dp"
            android:src="@drawable/ic_selection_all" />
    </LinearLayout>
    
    

    以上基本可以解决单个MenuItem偏移量的问题,如果需求Menu的布局与原生系统差异性太大的,就需要整体在Toolbar中使用自定义布局,不建议使用Menu系统菜单样式;

    相关文章

      网友评论

          本文标题:Android 解决MenuItem的间距偏移问题

          本文链接:https://www.haomeiwen.com/subject/qhfnjktx.html