2015-10-13 3 views
1

У меня есть андроид SearchView как так -Android SearchView - Переместить значок вправо (без ActionBar)

<SearchView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:queryHint="Search the forum ..." 
     android:iconifiedByDefault="true" 
     android:id="@+id/search_forum" 
     android:layout_alignParentRight="true" 
     android:textColor="#aaa" /> 

Это не в моем ActionBar, это где-то в моей деятельности.

Мне нужен значок (значок поиска), чтобы оставаться справа от моего макета. По клику он должен расширяться в SearchView (такое же поведение, как и SearchBar ActionBar). Я пробовал android:layout_alignParentRight="true", но значок остается слева.

Любая помощь будет здорово :)

ответ

1

я не смог найти точного ответа на этот вопрос, поэтому я this- Создать вид изображения с значок поиска. Расположили его справа от моего макета. В щелчке, сделанный вид поиска видимым и установите знаковое значение false и запрошен фокус для просмотра.

Я был бы так благодарен, если бы кто-нибудь мог в конечном итоге помочь мне найти правильное решение для этого.

0

Добавление SearchView в качестве элемента меню вместо элемента панели инструментов по сути решает проблему.

Elegent способ сделать это:

Шаг 1 - добавить поле поиска вы панель инструментов:

<item 
    android:id="@+id/action_search" 
    android:icon="@android:drawable/ic_menu_search" 
    app:showAsAction="always|collapseActionView" 
    app:actionViewClass="android.support.v7.widget.SearchView" 
    android:title="Search"/> 

Шаг 2 - добавить логику к вашему onCreateOptionsMenu()

import android.support.v7.widget.SearchView; // not the default ! 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 

    MenuItem myActionMenuItem = menu.findItem(R.id.action_search); 
    searchView = (SearchView) myActionMenuItem.getActionView(); 
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      UserFeedback.show("SearchOnQueryTextSubmit: " + query); 
      if(! searchView.isIconified()) { 
       searchView.setIconified(true); 
      } 
      myActionMenuItem.collapseActionView(); 
      return false; 
     } 
     @Override 
     public boolean onQueryTextChange(String s) { 
      // UserFeedback.show("SearchOnQueryTextChanged: " + s); 
      return false; 
     } 
    }); 
    return true; 
} 

https://stackoverflow.com/a/34255229/384564

0

Попробуйте этот путь он будет работать

SearchView search = (SearchView) item.getActionView(); 
    search.setLayoutParams(new ActionBar.LayoutParams(Gravity.RIGHT)); 
2

Если вопрос остается без ответа:

Просто переместите SearchView в RelativeLayout, совместив его с правой стороны родителя:

<RelativeLayout 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<android.support.v7.widget.SearchView 
    android:layout_width="wrap_content" 
    android:id="@+id/searchView" 
    android:layout_alignParentRight="true" 
    android:layout_height="match_parent" /> 

окончательный результат выглядит следующим образом:

CardView with Linearlayout containing aligned SearchView

Смежные вопросы