0

Мне было интересно, может ли кто-нибудь сломать для меня шаг за шагом, как добавить панель поиска в действие.Как добавить андроид Searchbar1

Я попытался найти его в Интернете, но я не мог понять, как это делается.

ответ

0

Добавить эту зависимость в вашем Gradle:

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

Добавьте это в Мани активность:

<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" /> 

Добавьте это в MainActivity:

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); 
} 

Создать некоторый список массива в строковых разрешении :

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

Добавьте строку рес для поиска текстового поля:

searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions)); 
0

добавить новый файл меню и назовите его Рез/меню/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; 
    }