2014-12-22 2 views
3

У меня есть активность списка, которая включает SearchView и ListView. Я хочу, чтобы SearchView был похож на то, что присутствует в Google Maps android app.Android - Создание пользовательского SearchView

enter image description here

В настоящее время мой SearchView код в activity_main.xml является

<SearchView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:queryHint="Search restaurants" 
     android:iconifiedByDefault="false" 
     android:id="@+id/searchView" /> 

Может кто-то наставит меня, как получить пользовательский SearchView, как и выше.

ответ

0

Вы должны создать макет с помощью значков и EditText. Что-то вроде этого:

<RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="@dimen/abc_action_bar_default_height" 
     > 

    <ImageButton 
      android:id="@+id/btnGoToMap" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:padding="18dp" 
      android:background="@android:color/transparent" 
      android:src="@drawable/btn_go_to_map_selector" 
      android:contentDescription="@string/contentDescription" 
      /> 

    <ImageButton 
      android:id="@+id/btnCleanSearch" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:paddingTop="18dp" 
      android:paddingLeft="18dp" 
      android:paddingBottom="18dp" 
      android:paddingRight="27.5dp" 
      android:background="@android:color/transparent" 
      android:src="@drawable/btn_clean_search_selector" 
      android:contentDescription="@string/contentDescription" 
      /> 
    <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="horizontal" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginLeft="60dp" 
      android:layout_marginRight="60dp" 
      > 
     <ImageButton 
       android:id="@+id/btnShowSearch" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="5dp" 
       android:layout_gravity="center_vertical" 
       android:background="@android:color/transparent" 
       android:src="@drawable/btn_show_search_field_selector" 
       android:contentDescription="@string/contentDescription" 
       /> 
     <EditText 
       android:id="@+id/fldSearchPhrase" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_vertical" 
       android:inputType="text" 
       android:singleLine="true" 
       android:textSize="20sp" 
       android:textColor="@android:color/black" 
       > 
       <requestFocus/> 
     </EditText> 
    </LinearLayout> 

</RelativeLayout> 

Это также более гибкий и позволяет управлять отдельными частями вашего макета.

2

Вы можете добавить android.support.v7.widget.Toolbar из AppCompat Library в свой макет. Он действует как пользовательский ActionBar, который можно разместить где угодно. Затем вы можете добавить переключатель меню и android.support.v7.widget.SearchView, который может свернуть/развернуть. наконец, добавьте некоторые действия из menu.xml.

Настройка пользовательской панели инструментов в качестве замены ActionBar:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.blah); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); 
    setSupportActionBar(toolbar); 
} 
Смежные вопросы