Android Yelp就像ActionBar中的搜索栏一样

时间:2015-06-24 16:21:19

标签: android android-layout

我正在尝试创建在搜索时采用多个参数的android应用程序。目前,我有一个可搜索的界面,我可以从我的操作栏搜索。但是,我想创建一个像搜索栏这样的yelp,我有2个文本字段输入数据,如图所示:

enter image description here

如何在搜索时添加其他文字字段? 这是我用于初始化搜索的代码

@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_home, menu);

    // Associate searchable configuration with the SearchView
    SearchManager searchManager =
            (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    final SearchView searchView =
            (SearchView) menu.findItem(R.id.action_search).getActionView();
    searchView.setSearchableInfo(
            searchManager.getSearchableInfo(getComponentName()));

    // set query change listener to hide keyboard after input has been
    // submitted
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextChange(String newText) {
            return false;
        }

        @Override
        public boolean onQueryTextSubmit(String query) {

            // hides and then unhides search tab to make sure keyboard
            // disappears when query is submitted
            searchView.clearFocus();
            return false;
        }
    });

这是我的menu_layout:

<item
    android:id="@+id/action_search"
    android:title="@string/search"
    android:orderInCategory="100"
    impulz:showAsAction="always"
    impulz:actionViewClass="android.widget.SearchView"/>

<item android:id="@+id/action_settings" android:title="@string/action_settings"
    android:orderInCategory="100" impulz:showAsAction="never" />

非常感谢。

1 个答案:

答案 0 :(得分:1)

你可以用 actionBar.setCustomView(R.layout.custom_search); 并以编程方式设置actionBar&#34;自定义视图&#34;

像这样:

<强> custom_search.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="right"
    android:orientation="horizontal">
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"             
    android:orientation="vertical" >
    <com.actionbarsherlock.widget.SearchView
        android:id="@+id/search1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:iconifiedByDefault="false"
        android:visibility="invisible" />
   <com.actionbarsherlock.widget.SearchView
        android:id="@+id/search2"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:iconifiedByDefault="false"
        android:visibility="invisible" />
    </LinearLayout>
    <ImageButton
        android:id="@+id/btn_search_content"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:src="@drawable/search_content" />

</LinearLayout>

<强> menu.xml文件

<item
    android:id="@+id/menu_search"
    android:icon="@drawable/red_icon"
    android:showAsAction="always"
    android:title="search" />

setCustomView用于onCreate()

<强> MainActivity

@Override
public void onCreate(Bundle savedInstanceState) {
    // ...
    actionBar.setCustomView(R.layout.custom_search);
    actionBarCustomView = action_bar.getCustomView();
    searchView = ((SearchView)     actionBarCustomView.findViewById(R.id.search1));
    searchView2 = ((SearchView) actionBarCustomView.findViewById(R.id.search2));
    searchView.setOnCloseListener(new SearchView.OnCloseListener() {
        @Override
        public boolean onClose() {
            searchView.setVisibility(View.INVISIBLE);
            searchView2.setVisibility(View.INVISIBLE);
            return false;
        }
    });
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

        case R.id.menu_search:
            //set visibilty 
           //do what ever you want
            break;

    }
    return true;
}

希望这对你有用。