24

アプリにSearchViewウィジェットがあり、それをカスタマイズすることについていくつか質問したいと思います。まず、検索アイコンをクリックするだけで検索を開始できますが、全体をSearchViewクリックできるようにする方法はありますか? SearchViewまた、クリックしたときにこのように表示させる方法はありますか?

忙しい猫

現在、この状態になっています。

忙しい猫

これが私のコードです:

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);
}
4

4 に答える 4

48

デフォルトでは、SearchView は「アイコン化」されており、虫眼鏡アイコンとして表示され、ユーザーがアイコンをクリックした場合にのみ、編集フィールドが展開されます。

ユーザーが SearchView の任意の場所をクリックして入力フィールドを展開できるようにします。クリック リスナーを追加し、ユーザーがクリックしたときに setIconified(false) を呼び出すだけです。

searchView = (SearchView)findViewById(R.id.searchView);
searchView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            searchView.setIconified(false);
        }
    });
于 2015-11-10T05:08:15.283 に答える
3

コンポーネント全体をクリックしたときに書き込みを許可するにはiconifiedByDefault="false"、xml で宣言することをお勧めします。

<SearchView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:iconifiedByDefault="false"/>
于 2018-01-12T10:49:22.627 に答える