2015-06-24 22 views
12

Arama yaparken birden fazla parametre alan android uygulaması oluşturmaya çalışıyorum. Şu anda, aranabilir bir arayüzüm var ve işlem çubuğumdan arama yapabiliyorum. ararkenAndroid Yelp gibi Reklam Çubuğu'nda arama çubuğu

enter image description here

nasıl ek bir metin alanı ekleyebilirsiniz: resimde görüldüğü gibi ben verilerde girmek için 2 metin alanları var nereye Ancak, arama çubuğu gibi bir havlama oluşturmak istiyorsunuz?

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

Çok teşekkür ederim: İşte

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

ve burada benim menu_layout olan arama initalize için kullanıyorum kodudur.

cevap

1

Eğer actionBar.setCustomView(R.layout.custom_search); kullanabilir ve actionBar programlı "özel görünüm" Böyle

ayarlayabilirsiniz:

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

bu sizin için hazırlayacağız sizin onCreate()

MainActivity içine 10

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

kullanım setCustomView

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

Umut.

İlgili konular