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

时间:2017-08-18 18:09:09

标签: android

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

我在互联网上搜索过但我无法找到答案。我从属性菜单中设置了编辑的可见性false,当用户单击搜索图标时,我尝试将可见性设置为true,但它没有用。

P.S我通过以下方式设置了可见性:     editText.setVisibility(View.VISIBLE);

3 个答案:

答案 0 :(得分:1)

您可以在edittext内使用RelativeLayout layout_gravity:top。 然后这个RelativeLayout将关闭工具栏。

接下来你必须做:

  1. 点击工具栏上的图标搜索,提供RelativeLayout可见性= visible,以及工具栏可见性:invisible
  2. RelativeLayout附近按下按钮,点击该按钮后,为工具栏提供Visibility = visible,并为RelativeLayout Visibility = invisible
  3. 我可以从应用程序中看到的方式。 您可以使用Visibility = View.GONE

    这可能对您有所帮助

答案 1 :(得分:1)

尝试使用以下方法:

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

希望它有所帮助!!!

答案 2 :(得分:0)

尝试以下解决方案:

菜单文件:

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