自定义SearchView在android中整体可点击 [英] Custom SearchView whole clickable in android

查看:194
本文介绍了自定义SearchView在android中整体可点击的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序中有一个SearchView小部件,我想问一些有关使其自定义的问题.首先,您只能通过单击搜索图标来开始搜索,有什么方法可以使整个SearchView可单击吗? 另外,是否有一种方法可以使SearchView在单击时出现类似的内容?

I have a SearchView widget in my app, and I want to ask some questions about making it custom. First of all, you can start search only by clicking on search icon, is there any way to make whole SearchView clickable? Also, is there a way to make SearchView appear something like this when it is clicked?

现在处于这种状态:

这是我的代码:

citySearch = (SearchView) findViewById(R.id.city_search_bar);
citySearch.setBackgroundResource(R.drawable.search_background);
citySearch.setOnSearchClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        citySearch.setIconifiedByDefault(true);
        //citySearch.setIconified(true);
    }

});
citySearch.setOnQueryTextListener(new OnQueryTextListener() {

    @Override
    public boolean onQueryTextChange(String text) {

        ((Filterable) cityListView.getAdapter()).getFilter().filter(text);

        return false;
    }

    @Override
    public boolean onQueryTextSubmit(String text) {

        return false;
    }

});

try
{
    Field searchField = SearchView.class.getDeclaredField("mSearchButton");
    searchField.setAccessible(true);
    ImageView searchBtn = (ImageView)searchField.get(citySearch);
    searchBtn.setImageResource(R.drawable.search_icon);
    searchBtn.setScaleType(ScaleType.FIT_CENTER);
    searchPlate.setBackgroundResource(R.drawable.search_background);
}
catch (NoSuchFieldException e)
{
    Log.e("SEARCHSTYLEERROR",e.getMessage(),e);
}
catch (IllegalAccessException e)
{
    Log.e("SEARCHSTYLEERROR",e.getMessage(),e);
}

推荐答案

默认情况下,SearchView为图标化",显示为放大镜图标,并且仅当用户单击该图标时,编辑字段才会展开.

By default the SearchView is 'iconified', which is displayed as a magnifying glass icon and only if the user clicks on the icon, then the edit field expands.

要使用户能够在SearchView上的任意位置单击并展开输入字段.我们只需要添加一个点击侦听器,并在用户点击时调用setIconified(false).

To enable the user to click anywhere on the SearchView and expand the input field. We just need to add a click listener and call setIconified(false) when the user clicks.

searchView = (SearchView)findViewById(R.id.searchView);
searchView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            searchView.setIconified(false);
        }
    });

这篇关于自定义SearchView在android中整体可点击的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆