【问题标题】:EditText on toolbar工具栏上的 EditText
【发布时间】:2026-02-22 05:50:01
【问题描述】:

您好,我想让我的 EditText 在我单击它时占据我的所有工具栏,并且我希望在用户结束输入后使工具栏恢复正常。

这是我的菜单 xml 文件

<item android:id="@+id/action_search"
    android:title="search"
    android:orderInCategory="100"
    android:icon="@drawable/search"
    app:showAsAction="ifRoom"
    />

这是我的java代码

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){

        case R.id.action_search :
            search.setHint("Procura");
            toolbar.addView(search);
            toolbar.setBackgroundColor(Color.WHITE);
            search.setOnEditorActionListener(new EditText.OnEditorActionListener() {
                @Override
                public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                    if (actionId == EditorInfo.IME_ACTION_SEARCH ||
                            actionId == EditorInfo.IME_ACTION_DONE ||
                            event.getAction() == KeyEvent.ACTION_DOWN &&
                                    event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
                        // the user is done typing.
                        SearchActivity.this.text = search.getText().toString();
                        return true;
                    }
                    return false;
                }
            });

            return true;

        default : return super.onOptionsItemSelected(item);
    }
}

提前谢谢你。

【问题讨论】:

    标签: android android-edittext android-toolbar


    【解决方案1】:

    我建议你使用SearchView,这样试试

    分级

    dependencies {
            compile 'com.lapism:searchview:2.2'
            }
    

    XML

    <com.lapism.searchview.view.SearchView
        android:id="@+id/searchView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    

    Java 代码

    @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.action_search: {
                    mSearchView.show(true/false); // animate, ONLY FOR MENU ITEM
                    return true;
                }
                default:
                    return super.onOptionsItemSelected(item);
            }
        }
    

    【讨论】:

    • 那个xml在菜单文件还是主布局文件中?