为了账号安全,请及时绑定邮箱和手机立即绑定

对于BottomNavigationView,如何管理菜单图标和文本之间的差距

对于BottomNavigationView,如何管理菜单图标和文本之间的差距

蝴蝶不菲 2021-11-24 18:26:48
我增加了“菜单图标”的大小,这就是它与“菜单文本”重叠的原因。因此,为此我使用以下方法“menuAlignment()”管理了它们之间的差距,但不知何故在点击“菜单项”后,“菜单图标”和“菜单文本”之间的差距恢复到以前的状态,即重叠,请帮我解决这个问题。我的代码如下:    public void menuAlignment()    {        for (int i = 0; i < menuView.getChildCount(); i++) {            final View iconView = menuView.getChildAt(i).findViewById(android.support.design.R.id.icon);            final FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) iconView.getLayoutParams();            final DisplayMetrics displayMetrics = getResources().getDisplayMetrics();            // set your height here            layoutParams.height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 27, displayMetrics);            // set your width here            layoutParams.width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 28, displayMetrics);            layoutParams.gravity=Gravity.CENTER_HORIZONTAL;            layoutParams.setMargins(0,0,0,200);            iconView.setLayoutParams(layoutParams);            //  iconView.setPadding(0, 0, 0, 10);        }}“ navigationClickListener ”的代码:-private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener            = new BottomNavigationView.OnNavigationItemSelectedListener() {        @Override        public boolean onNavigationItemSelected(@NonNull MenuItem item) {            switch (item.getItemId()) {                case R.id.navigation_jokes_word:                    loadFragment(new JokesFragment());                    menuAlignment();                    return true;                case R.id.navigation_jokes_images:                    loadFragment(new ImageJokesFragment());                    menuAlignment();                    return true;            }            return false;        }    };
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

菜单项视图


<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto">

<item

    android:id="@+id/action_home"

    android:icon="@drawable/ic_home_blue_48dp"

    android:title="Home" />

<item

    android:id="@+id/action_menu"

    android:icon="@drawable/ic_apps_black_24dp"

    android:title="Menu"

     />

<item

    android:id="@+id/action_msg"

    android:icon="@drawable/ic_chat_black_24dp"

    android:title="Message Inbox"

   />

</menu>

单击侦听器


bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override

        public boolean onNavigationItemSelected(@NonNull MenuItem item)

        {

            Fragment selectedFragment = null;

            switch (item.getItemId())

            {

                case R.id.action_home:

                    /*hide extra toolbars*/

                    hideViews();

                    /*hide back button*/

                    getSupportActionBar().setDisplayHomeAsUpEnabled(false);

                    selectedFragment = new TimelineFragment();

                    break;

                case R.id.action_menu:

                    hideViews();

                    getSupportActionBar().setDisplayHomeAsUpEnabled(false);

                    selectedFragment = new HomeFragment();

                    break;

                case R.id.action_msg:

                    hideViews();

                    getSupportActionBar().setDisplayHomeAsUpEnabled(false);

                    selectedFragment = new ChatFragment();

                    break;

            }


查看完整回答
反对 回复 2021-11-24
?
largeQ

TA贡献2039条经验 获得超7个赞

使用在菜单项中设置的自定义布局,例如:


<item

android:id="@+id/menu_item_1" 

app:showAsAction="always"

app:actionLayout="@layout/custom_menu_item_1" />

创建一个布局文件并将此文件设置为 app:actionLayout。


custom_menu_item_1.xml


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:src="@drawable/menu_drawable"

    android:orientation="vertical">


    <ImageView ... marginBottom=".." />

    <TextView  ... />

</LinearLayout>


查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 328 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信