如何将EditText添加到ActionBar进行ListView过滤?

时间:2015-01-29 12:10:02

标签: android android-actionbar

我在此ActionBar上有一个带有操作栏和一个图标的活动。当用户按下此图标时,我需要隐藏此图标并显示带有交叉的EditText以清除文本。当用户完成它时(在ListView中选择项目或按后退按钮)我将需要再次显示图标。

这是两个相关的问题: 1.如何在ActionBar上为ListView过滤添加EditText? 2.如何在EditText和图标之间更改ActionBar?

点击之前:

enter image description here

点击'加上'图标:

enter image description here

3 个答案:

答案 0 :(得分:1)

您需要将SearchView小部件添加到您的应用程序中。 官方文档在这里: http://developer.android.com/training/search/setup.html

还有详细的说明添加它。

答案 1 :(得分:1)

searchmenu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >      
<item android:id="@+id/action_search"
      android:title="search"
      android:icon="@android:drawable/ic_menu_search"
      android:showAsAction="always"
      android:actionViewClass="android.widget.SearchView" />
</menu>

<强> mainactivity.java

@Override
public boolean onCreateOptionsMenu(Menu menu) {     
    getMenuInflater().inflate(R.menu.searchmenu, menu);
    mSearchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
    setupSearchView();
    return super.onCreateOptionsMenu(menu);
}

     private void setupSearchView() {
            mSearchView.setIconifiedByDefault(true);
            mSearchView.setOnQueryTextListener(this);
            mSearchView.setQueryHint("Search Here");
        }

@Override
public boolean onQueryTextChange(String newText) {
        //implement the filterng techniques
    return false;
}

@Override
public boolean onQueryTextSubmit(String query) {

    return false;
}

答案 2 :(得分:0)

  
      
  1. 如何在ActionBar上为ListView过滤添加EditText?
  2.   

请参阅Commonsware的this answer。更清楚的是,他的sample project将成功。

  
      
  1. 如何在EditText和图标之间更改ActionBar?
  2.   

只需覆盖onOptionItemSelected并尝试设置该菜单项的可见性。

MenuItem item = menu.findItem(R.id.my_item);
item.setVisible(false);

或者,如果您想完全掌控,请尝试customize your action bar