使用 FloatingSearchView android 在操作菜单栏上显示徽章

6 search android badge searchview

我正在为搜索使用arimorty/floatingsearchview库,它工作正常,但现在我想要一个带有红色圆圈/徽章的通知图标,但无法找到制作方法。

在活动中:

<com.arlib.floatingsearchview.FloatingSearchView
        android:id="@+id/floating_search_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:floatingSearch_searchHint="Search..."
        app:floatingSearch_suggestionsListAnimDuration="250"
        app:floatingSearch_showSearchKey="false"
        app:floatingSearch_leftActionMode="showHamburger"
        app:floatingSearch_menu="@menu/searchbar_sidemenu"
        app:floatingSearch_close_search_on_keyboard_dismiss="true"
        android:paddingEnd="10dp"
        android:paddingStart="10dp"
        android:paddingTop="10dp"/>
Run Code Online (Sandbox Code Playgroud)

菜单代码:

<?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_notification"
        android:title="Notification"
        app:showAsAction="ifRoom"
        android:icon="@drawable/ic_notifications_none_black_24dp"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

我尝试了其他答案,但没有一个对我有用。

当前视图截图

预期视图截图

如果需要,我将解释/澄清或共享 Java 代码。

[更新]

我试图实现这个答案和其他答案。

在 GitHub repo 中搜索并找到了这个但不明白。

Mah*_*ani 0

感谢@Rinat 的评论

这是详细答案。

  1. 下载arimorty/floatingsearchview并将其作为模块导入(导入的详细答案)如果您使用的是 java,您可以只导入library下载的文件夹。

  2. 导入打开的 MenuView 文件后,src->main->java->com.arlib.floatingsearchview->util->view->MenuView.java 在此文件中查找全局字段的ImageView action = createActionView();更改action

在 MenuView 中创建一个新方法

public void chngNotificationIcon(int ResID){
 action.setImageResource(ResID);
}
Run Code Online (Sandbox Code Playgroud)
  1. 打开 FloatingSearchView.java 文件并创建此方法

    公共无效chngNotificationIcon(int ResID){ mMenuView.chngNotificationIcon(ResID); }

  2. 在主项目中创建一个新的drawbale红色圆圈通知并为其命名notification_withdot.xml

现在您可以使用设置任何图标

floatingSearchViewObject.chngNotificationIcon(R.drawable.notification_withdot);
Run Code Online (Sandbox Code Playgroud)

如果您遇到任何错误,请告诉我。