Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用自定义图标时,是否增加导航底部视图中选定图标的高度?_Java_Android_Bottomnavigationview - Fatal编程技术网

Java 使用自定义图标时,是否增加导航底部视图中选定图标的高度?

Java 使用自定义图标时,是否增加导航底部视图中选定图标的高度?,java,android,bottomnavigationview,Java,Android,Bottomnavigationview,请,我想在android中使用自定义图标作为底部导航视图,如下所示。选择时如何更改图标位置?当它们被选中时,它们会上升一点。你是创建一个有一定边距的选定图标,还是有办法在android中设置高度?不过,这张图片来自一个颤振库。我想在Android Java项目中重现这一点。或者找到一个实现它的库 您可以使用选择器执行此操作。 为此,您需要两个单独的图像: 1) 当“选定状态”为true时,表示您选择的图像 2) 默认表示未选择任何图标 XML 然后将此选择器用作底部导航视图的每个图像图标的可

请,我想在android中使用自定义图标作为底部导航视图,如下所示。选择时如何更改图标位置?当它们被选中时,它们会上升一点。你是创建一个有一定边距的选定图标,还是有办法在android中设置高度?不过,这张图片来自一个颤振库。我想在Android Java项目中重现这一点。或者找到一个实现它的库

您可以使用选择器执行此操作。 为此,您需要两个单独的图像: 1) 当“选定状态”为true时,表示您选择的图像 2) 默认表示未选择任何图标

XML


然后将此选择器用作底部导航视图的每个图像图标的可绘制图标。
您可以将选择器a/c中的其他属性添加到您的需求中。

我在那里看到了有趣的行为。但android本机底部导航栏似乎不支持在栏视图之外创建项目视图。也许你可以为你的导航栏提供一个定制的背景,30%的顶部是透明的,其余的颜色和普通的导航栏一样。我没有尝试过此操作。

底部导航视图中。设置导航项SelectedListener
对于每个按下的图标,调用动画方法
animateBottomIcon(int-itemIndex,布尔值已选中)

    BottomNavigationView bottomNav;
    BottomNavigationMenuView menuView;

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
      bottomNav.setClipChildren(false);
      bottomNav.setClipToPadding(false);
      bottomNav.setClipToOutline(false);
      menuView.setClipChildren(false);
    menuView = (BottomNavigationMenuView) bottomNav.getChildAt(0);
}

private void animateBottomIcon(int itemIndex, boolean isChecked) {
        final View view = menuView.getChildAt(itemIndex).findViewById(com.google.android.material.R.id.icon);
        ObjectAnimator translateUpAnimator = ObjectAnimator.ofFloat(view, "translationY",
                0,
                (float) (-(bottomNav.getHeight() / 2))).setDuration(500);
        if(!isChecked) {
            translateUpAnimator.start();
        }
        if(currentItemIndex != -1) {
            final View currentView = menuView.getChildAt(currentItemIndex).findViewById(com.google.android.material.R.id.icon);
            ObjectAnimator translateDownAnimator = ObjectAnimator.ofFloat(currentView, "translationY",
                    0,
                    (float) (-(bottomNav.getHeight() / 2))).setDuration(500);
            if (!isChecked) {
                translateDownAnimator.reverse();
            }
        }
    }

通常,底部导航会切断菜单图标以避免使用:
android:clipChildren=“false”
在布局的根视图上,以及在java类的onCreateView()内:

bottomNav.setClipChildren(false);
bottomNav.setClipToPadding(假);
底部导航设置轮廓(假)

最重要的是在菜单项上,因为它是图标项的父项<代码>菜单视图.setClipChildren(false)

记住给你的底部导航视图一个固定的高度

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/bottom_nav"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    app:layout_constraintBottom_toBottomOf="parent"
    android:layout_gravity="bottom"
    android:background="@color/white"
    app:itemIconSize="54dp"
    app:elevation="12dp"
    app:labelVisibilityMode="unlabeled"
    app:menu="@menu/menu_bottom_nav">[![enter image description here][1]][1]
[![在此处输入图像描述][1][1]

更新:图书馆就在这里

我偶然发现了你的问题,并以这个设计为灵感创建了一个定制的android导航栏

导航栏如下所示:

其代码位于此处:

bg\u green\u circle.xml
drawable如下所示:



我将来可能会把它变成一个包,但它仍然需要一些工作。如果发生这种情况,我会更新帖子。

谢谢,但我已经知道了。但是所选图标的新位置和背景???很好的工作,你能添加白色背景时,图标被选中,如在设计中?你说的白色背景是什么意思?哦,你是说底部的高度栏?就是这样,只是对比度不太好,因为我把应用程序的默认背景色改为白色,所以几乎看不见。我将把它改回来,替换GIF,但这并不是导航栏本身的改变是的,升高的底部栏仍然有一种背景它是material.io对导航栏的扩展,因此默认情况下它有背景。我已将gif更新为具有更高对比度的背景(#f3)
<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/bottom_nav"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    app:layout_constraintBottom_toBottomOf="parent"
    android:layout_gravity="bottom"
    android:background="@color/white"
    app:itemIconSize="54dp"
    app:elevation="12dp"
    app:labelVisibilityMode="unlabeled"
    app:menu="@menu/menu_bottom_nav">[![enter image description here][1]][1]