繁体   English   中英

单击菜单项上的工具栏中的添加编辑文本

[英]Add Edit Text in toolbar on menu item's click

我在工具栏中有一个搜索图标。 我要做的是仅在用户单击搜索图标时才显示编辑文本字段。

我已经在互联网上进行搜索,但是找不到答案。 我从属性菜单中将可见性设置为false,当用户单击搜索图标时,我尝试将可见性设置为true,但此方法无效。

PS我设置可见性为true:editText.setVisibility(View.VISIBLE);

您可以在RelativeLayout内部将edittextlayout_gravity一起layout_gravity :top。 然后,此RelativeLayout将关闭工具栏。

所以这是下一步,您必须做:

  1. 如果单击工具栏上的图标搜索,则使RelativeLayout Visibility = visible ,并为工具栏提供Visibility: invisible
  2. 并给按钮靠近RelativeLayout ,单击该按钮时,为工具栏提供Visibility = visible并为RelativeLayout Visibility = invisible

我可以从最新的应用程序中看到一些方法。 您可以使用Visibility = View.GONE

这也许可以帮助您

尝试使用以下方法:

在Menu.xml文件中:

<item
    android:id="@+id/action_search"
    app:actionLayout="@layout/search_view"
    android:icon="@drawable/ic_action_action_search"
    android:orderInCategory="1"
    android:title="@string/action_search"
    app:showAsAction="ifRoom|collapseActionView"/>

search_view.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:gravity="center_vertical"
              android:orientation="horizontal">

    <ImageView
        android:id="@+id/searchIconImageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_action_action_search"/>

    <EditText
        android:id="@+id/searchEditText"
        android:layout_width="175dp"
        android:layout_height="wrap_content"
        android:cursorVisible="true"
        android:ems="10"
        android:imeOptions="actionDone"
        android:inputType="text"
        android:textColor="@android:color/white">

        <requestFocus/>
    </EditText>

    <ImageButton
        android:id="@+id/closeImageButton"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:src="@drawable/ic_action_navigation_close"/>

</LinearLayout>

在Java文件中,在onCreateOptionsMenu方法中

searchMenuItem = menu.findItem(R.id.action_search);
View view = MenuItemCompat.getActionView(searchMenuItem);
        closeSearchViewImageButton = (ImageButton) view
                .findViewById(R.id.closeImageButton);
        closeSearchViewImageButton
                .setOnClickListener(new View.OnClickListener()
                {
                    @Override public void onClick(View v)
                    {
                        MenuItemCompat.collapseActionView(searchMenuItem);
                    }
                });

        searchEditText = (EditText) view
                .findViewById(R.id.searchEditText);
        searchEditText.addTextChangedListener(new TextWatcher()
        {

            @Override public void afterTextChanged(Editable s)
            {
            }

            @Override public void beforeTextChanged(CharSequence s, int start, int count, int
                                                                                          after)
            {
            }

            @Override public void onTextChanged(CharSequence s, int start, int before, int count)
            {
            }

        });

        MenuItemCompat.setOnActionExpandListener(searchMenuItem,
                                                 new MenuItemCompat.OnActionExpandListener()
                                                 {
                                                     @Override
                                                     public boolean onMenuItemActionExpand(
                                                                                          MenuItem
                                                                                          item)
                                                     {
                                                         showKeyboard();
                                                         return true;
                                                     }

                                                     @Override
                                                     public boolean onMenuItemActionCollapse(
                                                                                            MenuItem item)
                                                     {
                                                         hideKeyboard();
                                                         return true;
                                                     }
                                                 });

希望能帮助到你!!!

尝试以下解决方案:

菜单文件:

<item
    android:id="@+id/search_action"
    android:icon="@android:drawable/ic_menu_search"
    app:showAsAction="always"
    app:actionViewClass="android.support.v7.widget.SearchView"
    android:title="Search"/>

内部活动:

@Override
public boolean onCreateOptionsMenu( Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);

    MenuItem actionSearch= menu.findItem( R.id.search_action);
    final SearchView searchViewEditText = (SearchView) actionSearch.getActionView();
    searchViewEditText .setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {

            return false;
        }
    });

    return true;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM