我在工具栏中有一个搜索图标。我想要做的是仅在用户点击搜索图标时显示编辑文本字段。
我在互联网上搜索过但我无法找到答案。我从属性菜单中设置了编辑的可见性false,当用户单击搜索图标时,我尝试将可见性设置为true,但它没有用。
P.S我通过以下方式设置了可见性: editText.setVisibility(View.VISIBLE);
答案 0 :(得分:1)
您可以在edittext
内使用RelativeLayout
layout_gravity
:top。
然后这个RelativeLayout
将关闭工具栏。
接下来你必须做:
RelativeLayout
可见性= visible
,以及工具栏可见性:invisible
RelativeLayout
附近按下按钮,点击该按钮后,为工具栏提供Visibility = visible
,并为RelativeLayout
Visibility = invisible
我可以从应用程序中看到的方式。
您可以使用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;
}