BottomNavigationView导致闪退?——低版本安卓系统icon不能使用png图片

笔者在做一个项目时使用了AS自带模板下的BottomNavigationView功能,前期程序打开一直没有问题,在换用Android6.0及以下版本手机时,总是程序一打开就意外停止运行,换用Android7.0以上手机均无此现象,AS反馈的信息是出错在了MainActivity里的:

setContentView(R.layout.activity_on_running);

 进行代码的逐行调试后发现在读取到BottomNavigationView里的menu后返回了错误id,程序终止运行:

app:menu="@menu/bottom_nav_menu"

在此,将原始bottom_nav_menu代码放在下方:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_home"
        android:icon="@drawable/home"
        android:title="@string/title_home" />

    <item
        android:id="@+id/navigation_plan"
        android:icon="@drawable/plan"
        android:title="@string/title_plan" />

    <item
        android:id="@+id/navigation_data"
        android:icon="@drawable/data"
        android:title="@string/title_data" />

    <item
        android:id="@+id/navigation_user"
        android:icon="@drawable/personal"
        android:title="@string/title_user" />

</menu>

直接来看并没有什么问题,并且每项数据都在 ,未调用错误,最后,经多次尝试后发现是icon使用了png图片,并非xml导致的。安卓开发会经常遇到png图片无法加载的错误,针对该问题AS里指定的"android:icon:"数据对象是xml或png,但在Android6.0以下版本,png图片并不能直接作为BottomNavigationView的icon使用,一些新手可能不会编写icon的xml文件,在此笔者提供一种方法:

1.首先从网站上下载对应图标的SVG格式:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NzQ2NDAx,size_16,color_FFFFFF,t_70

          网站有很多,例如iconfont、甚至WPS,然后保存成SVG格式,记住所保存的目录。

2.使用Android Studio进行转化:

          点击File->new->Vector Asset,选择之前保存的图片:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NzQ2NDAx,size_16,color_FFFFFF,t_70

           更改名称和Size,Size大小一般为24dp×24dp,最后点next,选择保存目录,即可自动生成一个xml文件。

猜你喜欢

转载自blog.csdn.net/qq_44746401/article/details/114876981