【问题标题】:How to increase the clickable area of searchview menu icon?如何增加searchview菜单图标的可点击区域?
【发布时间】:2020-04-06 19:25:50
【问题描述】:

我想让整个红色圆圈区域(包括标题、操作栏的背景和搜索图标)可点击,但我的代码只允许点击搜索图标。

我在这里找到了类似的问题:我在这个问题中发现了同样的问题: How to increase the menuitem width in android while using Actionbar 但该解决方案不适用于我的代码。

这是我的菜单 xml:

<?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"
    android:id="@+id/search_view_menu">

    <item
        android:id="@+id/action_search"
        android:icon="@drawable/ic_search_dark"
        app:actionViewClass="androidx.appcompat.widget.SearchView"
        app:showAsAction="withText|ifRoom|collapseActionView"
        android:title="Enter your item"
        app:collapseIcon="@drawable/ic_close_dark"/>

</menu>

这是我的搜索 java

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.example_menu, menu);

        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchView searchView = (SearchView) searchItem.getActionView();

        searchView.setMaxWidth(Integer.MAX_VALUE);

        searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                adapter.getFilter().filter(newText);
                return false;
            }
        });
        return true;
    }

【问题讨论】:

    标签: android android-actionbar searchview android-menu


    【解决方案1】:

    你可以在你的SearchView中设置clickable true

    android:clickable="true"
    

    或将 `setIconified 改为 false

    searchView.setIconified(false);
    

    【讨论】:

    • 感谢您的评论。不幸的是,它们都不适合我。我试过(1)在menu xml中添加android:clickable="true",(2)在search java中添加searchView.setIconified(false);,以及(3)在search java中添加searchView.setClickable(true);
    【解决方案2】:

    试试这个:

    首先将您的活动主题更改为AppTheme.NoActionBar

     <activity
                android:name=".myActivity"
                android:theme="@style/AppTheme.NoActionBar">
    

    然后在你的布局中添加这个 EditText。

    <LinearLayout 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:orientation="vertical"
        tools:context=".terminalShortActivity">
    
    
        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="#4EACE2"
            app:popupTheme="@style/ThemeOverlay.AppCompat">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center_vertical"
                android:orientation="horizontal">
    
                <TextView
                    style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Terminal Shortcuts"
                    android:textColor="#FFFFFF" />
            </LinearLayout>
        </androidx.appcompat.widget.Toolbar>
        <EditText
            android:id="@+id/search_ip_terminal"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_margin="10dp"
            android:background="@drawable/search_ip_bg"
            android:drawableLeft="@drawable/ic_search_black_24dp"
            android:drawablePadding="8dp"
            android:hint="Enter Your Item"
            android:textColor="#7C000000" />
    // Add here you remaing layout
    
    </LinearLayout>
    

    search_ip_bg.xml

    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <solid android:color="@color/blue"/>
        <corners android:radius="32dp"/>
        <stroke
            android:width="2dip"
            android:color="#039BE5" />
        <padding android:top="12dp" android:left="12dp" android:bottom="12dp" android:right="12dp"/>
    
    </shape>
    

    【讨论】:

    • 感谢您的评论。因为我不能直接在menu xml中使用EditText(好像只关心item),所以我使用下面的网站在menu xml中申请EditText。不幸的是,它没有用。我什至无法在我的应用中看到使用 EditText 修改后的布局。
    • 在清单文件中更改您的活动主题并使用 android:theme="@style/AppTheme.NoActionBar" 。然后将此 EditText 添加到您的布局中而不是菜单中。
    • 再次感谢您。当我设置android:theme="@style/AppTheme.NoActionBar" 时,不幸的是应用程序不再显示任何操作栏,包括新添加的工具栏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 2013-10-15
    • 1970-01-01
    相关资源
    最近更新 更多