代码之家  ›  专栏  ›  技术社区  ›  Jimmynyc

如何添加android Searchbar1[重复]

  •  0
  • Jimmynyc  · 技术社区  · 8 年前

    我想知道是否有人可以为我一步一步地细分,如何在活动中添加搜索栏。

    我试图在网上查到它,但我真的不明白它是怎么做到的。

    2 回复  |  直到 8 年前
        1
  •  0
  •   Manish    8 年前

    在渐变中添加此依赖项:

    dependencies {
        compile 'com.miguelcatalan:materialsearchview:1.0.0'
    }
    

    将此添加到您的Mani活动中:

    <RelativeLayout
        android:id="@+id/toolbar_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/theme_primary" />
    
        <com.miguelcatalan.materialsearchview.MaterialSearchView
            android:id="@+id/search_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </RelativeLayout>
    

    创建菜单文件:

    <item
        android:id="@+id/action_search"
        android:icon="@drawable/ic_action_action_search"
        android:orderInCategory="100"
        android:title="@string/abc_search_hint"
        app:showAsAction="always" />
    

    将此添加到您的主活动:

    MaterialSearchView searchView = (MaterialSearchView) findViewById(R.id.search_view);
    searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                //Do some magic
                return false;
            }
    
            @Override
            public boolean onQueryTextChange(String newText) {
                //Do some magic
                return false;
            }
        });
    
        searchView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() {
            @Override
            public void onSearchViewShown() {
                //Do some magic
            }
    
            @Override
            public void onSearchViewClosed() {
                //Do some magic
            }
        });
    

    以下是OnActivityResult:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == MaterialSearchView.REQUEST_VOICE && resultCode == RESULT_OK) {
            ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
            if (matches != null && matches.size() > 0) {
                String searchWrd = matches.get(0);
                if (!TextUtils.isEmpty(searchWrd)) {
                    searchView.setQuery(searchWrd, false);
                }
            }
    
            return;
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
    

    在字符串res中创建一些数组列表:

    <string-array name="query_suggestions">
        <item>Android</item>
        <item>iOS</item>
        <item>SCALA</item>
        <item>Ruby</item>
        <item>JavaScript</item>
    </string-array>
    

    将字符串res添加到搜索文本框:

    searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions));
    
        2
  •  0
  •   Dinesh Saini    8 年前

    添加一个新菜单文件,并将其命名为res/menu/menu_search.xml:

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
        <item android:id="@+id/search"
                android:title="@string/hint_search"
                android:icon="@android:drawable/ic_menu_search"
                app:showAsAction="collapseActionView|ifRoom"
                app:actionViewClass="android.support.v7.widget.SearchView" />
    </menu>
    

    创建菜单文件后,我们将在MainActivity中加载它,如下所述:

    public class MainActivity extends AppCompatActivity 
            implements SearchView.OnQueryTextListener {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu_search, menu);
    
            MenuItem searchItem = menu.findItem(R.id.search);
            SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
            searchView.setOnQueryTextListener(this);
    
            return true;
        }