简体   繁体   English

Android - 创建自定义SearchView

[英]Android - Creating a custom SearchView

I am having a List Activity which include a SearchView and ListView. 我有一个列表活动,其中包括SearchView和ListView。 I wish to have SearchView similar to what is present in google maps android app. 我希望SearchView与google maps android app中的内容类似。

在此输入图像描述

Currently my SearchView code in activity_main.xml is 目前我在activity_main.xml中的SearchView代码是

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

Can someone guide me how to get a custom SearchView like above. 有人可以指导我如何获得上面的自定义SearchView。

You can add a android.support.v7.widget.Toolbar from AppCompat Library in your layout. 您可以在布局中从AppCompat Library添加android.support.v7.widget.Toolbar It acts like a custom ActionBar that can be placed anywhere. 它就像一个可以放在任何地方的自定义ActionBar。 Then you can add a menu toggle, and a android.support.v7.widget.SearchView which can collapse/expand. 然后你可以添加一个菜单切换,以及一个可以折叠/展开的android.support.v7.widget.SearchView finally, add some actions from a menu.xml . 最后,从menu.xml添加一些操作。

Setting a custom Toolbar as your ActionBar replacement: 将自定义工具栏设置为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);
}

You have to create the layout with icons and EditText. 您必须使用图标和EditText创建布局。 Something like this: 像这样的东西:

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

It's also more flexible and allow you to manage separate parts of your layout. 它也更灵活,允许您管理布局的单独部分。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM