Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 2.3版操作栏中的主页按钮和SearchView问题_Android - Fatal编程技术网

Android 2.3版操作栏中的主页按钮和SearchView问题

Android 2.3版操作栏中的主页按钮和SearchView问题,android,Android,我被应用程序中的一个部件卡住了。我的应用程序的最低sdk版本是v2.3。我正在做动作栏。当我单击操作栏上的搜索图标时,它会展开,但不会完全展开。右侧的两个图标仍然可见。当我单击home up按钮时,它关闭SearchView,但不调用onOptions ItemSelected方法 注意:Home up按钮在第一次单击时调用OnOptions ItemSelected方法(当searchview未展开时),但在searchview展开时不调用OnOptions ItemSelected方法 我正

我被应用程序中的一个部件卡住了。我的应用程序的最低sdk版本是v2.3。我正在做动作栏。当我单击操作栏上的搜索图标时,它会展开,但不会完全展开。右侧的两个图标仍然可见。当我单击home up按钮时,它关闭SearchView,但不调用onOptions ItemSelected方法

注意:Home up按钮在第一次单击时调用OnOptions ItemSelected方法(当searchview未展开时),但在searchview展开时不调用OnOptions ItemSelected方法

我正在使用支持库,因为我正在处理非常旧的版本。请帮帮我

我的代码如下:

menu_main.xml

<menu 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" tools:context=".MainActivity">

<item
    android:id="@+id/search_action"
    app:showAsAction="always|collapseActionView"
    android:title="@string/search_action"
    android:icon="@drawable/search_icon"
    app:actionViewClass="android.support.v7.widget.SearchView"
    />

<item
    android:id="@+id/shopping_cart"
    app:actionLayout="@layout/badge_layout"
    android:title="@string/shopping_cart"
    app:showAsAction="always"
    >
</item>

<item
    android:id="@+id/user_menu"
    android:icon="@drawable/overflow_icon"
    app:showAsAction="always"
    android:title="user">
</item>
</menu>

我用另一种方式来处理这个问题。我创建了一个自定义的SearchView,并附加了两个侦听器,即expandListener和CollapsElister。在展开时,我使所有菜单项都不可见,反之亦然。

我相信您不需要隐藏右侧的图标。您必须隐藏左侧的主页(或菜单)按钮。从Android 23及更高版本开始检查此项,它不会隐藏右侧的图标
setOnActionExpandListener
对我不起作用。。。你是怎么做到的?我不得不使用
setOnSearchClickListener
setOnCloseListener
作为替代方法:发现后,您设置了
collapseActionView
,这使得它总是展开的,我不想要它
<resources  xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <!--<item name="android:background"  tools:ignore="NewApi">@color/action_bar_color</item>-->
    <item name="background">@color/action_bar_color</item>
    <item name="logo">@drawable/nt_logo</item>
    <item name="displayOptions">useLogo|showHome</item>
</style>
package com.example.stickyheader.stickyheader;

import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.widget.SearchView;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ActionBar actionBar = getSupportActionBar();
    actionBar.setHomeButtonEnabled(true);
    actionBar.setDisplayShowTitleEnabled(false);

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    MenuItem searchItem = menu.findItem(R.id.search_action);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    searchView.setQueryHint("Search here");
    searchView.setIconifiedByDefault(true);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();



    return super.onOptionsItemSelected(item);
}
}