Android 2.3版操作栏中的主页按钮和SearchView问题
我被应用程序中的一个部件卡住了。我的应用程序的最低sdk版本是v2.3。我正在做动作栏。当我单击操作栏上的搜索图标时,它会展开,但不会完全展开。右侧的两个图标仍然可见。当我单击home up按钮时,它关闭SearchView,但不调用onOptions ItemSelected方法 注意:Home up按钮在第一次单击时调用OnOptions ItemSelected方法(当searchview未展开时),但在searchview展开时不调用OnOptions ItemSelected方法 我正在使用支持库,因为我正在处理非常旧的版本。请帮帮我 我的代码如下: menu_main.xmlAndroid 2.3版操作栏中的主页按钮和SearchView问题,android,Android,我被应用程序中的一个部件卡住了。我的应用程序的最低sdk版本是v2.3。我正在做动作栏。当我单击操作栏上的搜索图标时,它会展开,但不会完全展开。右侧的两个图标仍然可见。当我单击home up按钮时,它关闭SearchView,但不调用onOptions ItemSelected方法 注意:Home up按钮在第一次单击时调用OnOptions ItemSelected方法(当searchview未展开时),但在searchview展开时不调用OnOptions ItemSelected方法 我正
<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);
}
}