处理“搜索视图”图标上的单击

问题描述 投票:1回答:1

首先,我将向您解释我想做什么。然后,我会告诉你我已经做了什么。最后,我会请求您帮助我实施的内容。

My aim

我的目标是像Play商店一样有一个qazxsw poi:qazxsw poi

单击汉堡菜单时,会显示菜单。当您单击输入时,它会显示更改图标并显示键盘:

Toolbar

What I have for now

enter image description here

我按照文档(enter image description here + enter image description here + https://developer.android.com/training/appbar/)。因此,我有:

  1. https://developer.android.com/guide/topics/search/search-dialog包含我的https://developer.android.com/training/search/setup小部件
res/menu/action_bar_menu.xml
  1. 我片段布局中的SearchView
<?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/searchView"
        android:title="@string/search_title"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always" />

</menu>
  1. 风格Toolbar(见上文):
    <android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorRoyalRed"
    android:theme="@style/ToolbarStyle"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
  1. 在fragment类中,我使用了工具栏:
ToolbarStyle
  1. 在片段类中,我使用了<style name="ToolbarStyle"> <item name="android:background">@color/colorRoyalRed</item> <item name="android:textColorPrimary">@color/colorRichYellow</item> <item name="actionButtonStyle">@style/ToolbarActionButton</item> </style> <style name="ToolbarActionButton"> <item name="android:padding">0dp</item> <item name="android:paddingStart">0dp</item> <item name="android:paddingEnd">0dp</item> </style>
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_home, container, false);
    Toolbar toolbar = view.findViewById(R.id.toolbar);
    toolbar.setTitle("");
    AppCompatActivity app_compat_activity = (AppCompatActivity) getActivity();
    Objects.requireNonNull(app_compat_activity).setSupportActionBar(toolbar);
    app_compat_activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

    return view;
}

好吧,还有其他实现(有关清单的修改等),但它们并不重要(请注意在工具栏中实现简单搜索栏所需的所有更改...超过5个步骤......)。

What I would want to do next (help please!)

我不想使用菜单项结构以外的任何东西(因此我不想在片段的布局中实际添加SearchView)。

  1. 我怎么能改变 @Override public void onCreateOptionsMenu(Menu menu, MenuInflater menu_inflater) { menu_inflater.inflate(R.menu.action_bar_menu, menu); super.onCreateOptionsMenu(menu,menu_inflater); AppCompatActivity app_compat_activity = (AppCompatActivity) getActivity(); SearchView search_view = (SearchView) menu.findItem(R.id.searchView).getActionView(); search_view.setIconifiedByDefault(false); SearchManager search_manager = (SearchManager) Objects.requireNonNull(app_compat_activity).getSystemService(Context.SEARCH_SERVICE); search_view.setSearchableInfo(Objects.requireNonNull(search_manager).getSearchableInfo(app_compat_activity.getComponentName())); } 的图标?现在它是放大镜。它必须是汉堡菜单。我试图通过向SearchView指示SearchView来修改res/menu/action_bar_menu.xml,但它没有用。我也尝试在android:icon=风格中使用SearchView,但它没有用。这里的目标是用汉堡菜单图标替换玻璃。
  2. 我怎么能处理点击<item name="searchIcon">@drawable/ic_baseline_menu_24px</item>的汉堡菜单图标(一旦设置好)?的确,我会打电话给我的ToolbarActionButton功能来打开我的菜单。
  3. 我怎么能处理SearchView内容的点击?实际上,我将用左箭头替换汉堡菜单(如果点击,键盘将消失,汉堡菜单将显示)。

Am I using the wrong things?

我刚刚关注了谷歌的文档。但是我意识到自己可能走错了道路似乎很复杂?我应该停止使用菜单项结构吗?

android android-toolbar searchview
1个回答
1
投票

您可以尝试在此Google项目下使用的DrawerLayout::openDrawer - SearchView

这些库也可以帮助您实现所需的结果。

SearchEditTextLayouthttps://android.googlesource.com/platform/packages/apps/Dialer/

© www.soinside.com 2019 - 2024. All rights reserved.