【问题标题】:Action Bar Search in collapsing Toolbar Layout折叠工具栏布局中的操作栏搜索
【发布时间】:2016-04-29 10:29:29
【问题描述】:

我有一个带有回收器视图的 CollapsingToolbarLayout。在我的操作栏中,我有一个搜索菜单项。但是每当我单击搜索图标时,edittext 布局都不会出现。

截图:- A) 未点击搜索时

B) 当点击搜索图标时

我的 main_activity.xml 代码:-

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:id="@+id/activity_main_id"
    tools:context="objectdistance.ankeshkjaisansaria.ram.sita.cameratag.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">


        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginStart="48dp"
            app:expandedTitleMarginEnd="64dp"
            android:fitsSystemWindows="true">

            <ImageView
                android:id="@+id/imagetoolbar"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:scaleType="centerCrop"
                android:fitsSystemWindows="true"
                app:layout_scrollFlags="scroll"
                app:layout_collapseMode="parallax"/>

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                app:layout_collapseMode="pin" />

        </android.support.design.widget.CollapsingToolbarLayout>


    </android.support.design.widget.AppBarLayout>




    <android.support.v7.widget.RecyclerView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />



</android.support.design.widget.CoordinatorLayout>

在我的 activity.java 中,搜索项是这样处理的:-

        ActionBar action = getSupportActionBar(); //get the actionbar
        action.setDisplayShowCustomEnabled(true); //enable it to display a
        // custom view in the action bar.
        action.setCustomView(R.layout.search_bar);//add the custom view
        action.setDisplayShowTitleEnabled(false); //hide the title

但 search_bar 布局不仅仅出现。而且标题也没有隐藏。

在使用折叠布局时是否有任何不同的方式来处理菜单项中的搜索?

【问题讨论】:

  • 也发布您的代码。
  • 您是否在menu.xml 或任何自定义菜单XML 中添加了Search View 的项目?
  • @jaydroider 我已经编辑了显示屏幕截图的问题。我得到了搜索图标和所有东西。唯一的问题是没有显示编辑文本。
  • 是的,我已经检查了您的屏幕截图。您是否在manifest 中授予了所需的权限。
  • @jaydroider 哪个权限

标签: android android-actionbar menuitem android-menu android-collapsingtoolbarlayout


【解决方案1】:

现在我们在 Android 中有了工具栏。因此,不要使用 Activity 中的 ActionBar,而是使用 To 工具栏视图为 ActionBar。

  Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        ActionBar ab = getSupportActionBar();

现在对 ab 进行操作。默认情况下,您的活动显示一个操作栏,但工具栏将其隐藏。也使用菜单项作为

<item
    android:id="@+id/action_search"
    android:icon="@drawable/ic_action_search"
    android:title="Search for products"
     app:actionViewClass="android.support.v7.widget.SearchView"
     app:showAsAction="always|collapseActionView"
    />

【讨论】:

  • 在我的 OnCreate 方法中,我已经有了这段代码。 setSupportActionBar(工具栏)。
  • 添加 actionViewClass="android.support.v7.widget.SearchView" 有效,但我想在搜索栏显示我的自定义布局
【解决方案2】:

尝试将此添加到菜单 xml 上的项目中。

app:actionLayout= "@layout/YourSearchLayout" 

【讨论】:

    【解决方案3】:

    你应该实现这样的东西来让你的“搜索字段”正常工作:

       public boolean onCreateOptionsMenu(Menu menu) {
       
       getMenuInflater().inflate(R.menu.menu_search_list, menu);
    
      MenuItem searchMenuItem = menu.findItem(R.id.action_search);
    
      android.support.v7.widget.SearchView searchView = (android.support.v7.widget.SearchView) MenuItemCompat.getActionView(searchMenuItem);
    
        searchView.setQueryHint(getString(R.string.type_here_to_filter));
    
        searchView.setOnQueryTextListener(new android.support.v7.widget.SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return searchForAnItemInTheRecyclerView(query);
            }
    
            @Override
            public boolean onQueryTextChange(String newText) {
                return searchForAnItemInTheRecyclerView(newText);
            }
        });
    
        return true;
    }
    

    【讨论】:

      【解决方案4】:

      尝试在 Menu.xml 文件中添加这样的项目:

       <item
          android:id="@+id/action_settings"
          android:orderInCategory="100"
          android:icon="@drawable/src"
          android:title="@string/action_settings"
          app:showAsAction="always|collapseActionview" />
      

      【讨论】:

      • 他不是在找这个。他想显示Edit Text 没有出现。在给出答案之前,请先阅读问题和评论。
      • 没错。我的搜索图标出现了。唯一的问题是没有显示edittext。