55

こんにちは、searchView 内にテキストを配置し、searchView ウィジェットにフォーカス/展開する必要があります。

これは私が試したものですが、うまくいきません

@Override
public boolean onCreateOptionsMenu(final Menu menu) {
...
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setQuery(this.filtro, false);
    searchView.setFocusable(true);
    searchView.requestFocus();
    searchView.requestFocusFromTouch();
4

11 に答える 11

124

を使ってみてくださいsearchView.setIconified(false)。これは私のために働いた:

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ActionBar actionBar = getActionBar();
    SearchView searchView = new SearchView(this);
    actionBar.setCustomView(searchView);
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    searchView.setQuery("test",true);
    searchView.setFocusable(true);
    searchView.setIconified(false);
    searchView.requestFocusFromTouch();
}
于 2012-04-25T14:12:58.103 に答える
4

ここに別の解決策があります。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu, menu);
    MenuItem menu_search = menu.findItem(R.id.menu_search);


    menu_search.setOnActionExpandListener(new OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            // Do something when collapsed
            return true;  // Return true to collapse action view
        }

        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            //get focus
            item.getActionView().requestFocus();
            //get input method
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
            return true;  // Return true to expand action view
        }
    });
    return true;
}
于 2012-12-17T13:52:16.303 に答える
0
searchView.setQuery("typeAnything",true);
searchView.setFocusable(true);

トリックを行います。

于 2015-12-14T08:06:28.257 に答える
0

私にとって、@ farmer.chs からのアプローチは、遅延を追加した後にのみ機能しました。

 override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
 super.onViewCreated(view, savedInstanceState)

 activity?.let {
            searchBar?.postDelayed({
                  searchBar.isIconified = false
                  searchBar.isFocusable = true
                  searchBar.requestFocusFromTouch()
            }, 100)
        }

PSこのコードはフラグメントで呼び出されます

于 2022-02-22T09:45:46.600 に答える