android searchview视频教程,Android--SearchView基本使用

谷歌提供了搜索控件SearchView,在v7包中,我们可以在Toolbar的menu中定义它

xmlns:app="http://schemas.android.com/apk/res-auto">

android:id="@+id/searchview"

android:orderInCategory="100"

app:actionViewClass="android.support.v7.widget.SearchView"

android:title="搜索"

app:showAsAction="always" />

android:title="其他"

app:showAsAction="never" />

android:title="设置"

app:showAsAction="never" />

3701f56f0e18

SearchView.jpg

3701f56f0e18

SearchView.jpg

在Activity的onCreateOptionsMenu方法中获取SearchView

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.menu, menu);

MenuItem menuItem = menu.findItem(R.id.searchview);

SearchView searchView;

if (Build.VERSION.SDK_INT >= 14) {//大于 v14

searchView = (SearchView) menuItem.getActionView();

} else {//小于 v14

searchView = (SearchView) MenuItemCompat.getActionView(menuItem);

}

//默认就是搜索框展开

searchView.setIconified(false);

//一直都是搜索框,搜索图标在输入框左侧(默认是内嵌的)

searchView.setIconifiedByDefault(false);

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {

//文字输入完成,提交的回调

@Override

public boolean onQueryTextSubmit(String s) {

return false;

}

//输入文字发生改变

@Override

public boolean onQueryTextChange(String s) {

return false;

}

});

//点击搜索图标,搜索框展开时的回调

searchView.setOnSearchClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

}

});

return super.onCreateOptionsMenu(menu);

}

如果想要修改它的控件,可以通过id查找,我们先看下SearchView的布局文件

android:id="@+id/search_bar"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal">

android:id="@+id/search_badge"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:gravity="center_vertical"

android:layout_marginBottom="2dip"

android:drawablePadding="0dip"

android:textAppearance="?android:attr/textAppearanceMedium"

android:textColor="?android:attr/textColorPrimary"

android:visibility="gone" />

android:id="@+id/search_button"

style="?attr/actionButtonStyle"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:layout_gravity="center_vertical"

android:focusable="true"

android:contentDescription="@string/abc_searchview_description_search" />

android:id="@+id/search_edit_frame"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:layout_weight="1"

android:layout_marginLeft="8dip"

android:layout_marginRight="8dip"

android:orientation="horizontal"

android:layoutDirection="locale">

android:id="@+id/search_mag_icon"

android:layout_width="@dimen/abc_dropdownitem_icon_width"

android:layout_height="wrap_content"

android:scaleType="centerInside"

android:layout_gravity="center_vertical"

android:visibility="gone"

style="@style/RtlOverlay.Widget.AppCompat.SearchView.MagIcon" />

android:id="@+id/search_plate"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:layout_weight="1"

android:layout_gravity="center_vertical"

android:orientation="horizontal">

android:id="@+id/search_src_text"

android:layout_height="36dip"

android:layout_width="0dp"

android:layout_weight="1"

android:layout_gravity="center_vertical"

android:paddingLeft="@dimen/abc_dropdownitem_text_padding_left"

android:paddingRight="@dimen/abc_dropdownitem_text_padding_right"

android:singleLine="true"

android:ellipsize="end"

android:background="@null"

android:inputType="text|textAutoComplete|textNoSuggestions"

android:imeOptions="actionSearch"

android:dropDownHeight="wrap_content"

android:dropDownAnchor="@id/search_edit_frame"

android:dropDownVerticalOffset="0dip"

android:dropDownHorizontalOffset="0dip" />

android:id="@+id/search_close_btn"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:paddingLeft="8dip"

android:paddingRight="8dip"

android:layout_gravity="center_vertical"

android:background="?attr/selectableItemBackgroundBorderless"

android:focusable="true"

android:contentDescription="@string/abc_searchview_description_clear" />

android:id="@+id/submit_area"

android:orientation="horizontal"

android:layout_width="wrap_content"

android:layout_height="match_parent">

android:id="@+id/search_go_btn"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:layout_gravity="center_vertical"

android:paddingLeft="16dip"

android:paddingRight="16dip"

android:background="?attr/selectableItemBackgroundBorderless"

android:visibility="gone"

android:focusable="true"

android:contentDescription="@string/abc_searchview_description_submit" />

android:id="@+id/search_voice_btn"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:layout_gravity="center_vertical"

android:paddingLeft="16dip"

android:paddingRight="16dip"

android:background="?attr/selectableItemBackgroundBorderless"

android:visibility="gone"

android:focusable="true"

android:contentDescription="@string/abc_searchview_description_voice" />

3701f56f0e18

SearchView.png

通过findViewById方法,我们可以随意的修改它的控件样式,最后我们还要调用searchView.setSubmitButtonEnabled(true)才能起作用

ImageView imageView = searchView.findViewById(R.id.search_go_btn);

imageView.setVisibility(View.VISIBLE);

imageView.setImageResource(R.drawable.ic_arrow_back_black_24dp);

searchView.setSubmitButtonEnabled(true);

3701f56f0e18

SearchView带有右侧图标.jpg

此外SearchView还带有模糊搜索的功能,它的内部有一个Adapter

CursorAdapter mSuggestionsAdapter;

SearchView的基本使用就到此为止了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值