gpt4 book ai didi

android-actionbar - 打开 ActionLayout 时隐藏菜单项

转载 作者:行者123 更新时间:2023-12-04 14:03:06 24 4
gpt4 key购买 nike

我正在使用 ActionBarSherlock:

有 3 个菜单项,其中只有 1 个具有 ActionLayout。

default_menu.xml

<item
android:id="@+id/searchIcon"
android:icon="@drawable/search_icon"
android:actionLayout="@layout/search_icon_actionview"
android:showAsAction="always|collapseActionView"
android:title="Search"/>
<item
android:id="@+id/newIcon"
android:icon="@drawable/new_icon"
android:orderInCategory="0"
android:showAsAction="ifRoom|collapseActionView"
android:title="New"/>
<item
android:id="@+id/notificationIcon"
android:icon="@drawable/notification_icon"
android:orderInCategory="0"
android:showAsAction="ifRoom|collapseActionView"
android:title="Notifications"/>

如果我使用上面的代码。只有 1st 2 个图标可见。如果我将第二个和第三个设为 永远 即使在 时它们仍然存在 Action 布局单击 时打开搜索 .

我想最初显示所有 3 个菜单项,并在单击 search_icon 时隐藏每个项。

我也对我的实现有疑问,我是否以正确的方式做我。

在 Activity(有一个 viewPager)的第一个 Fragment 中:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {

case R.id.searchIcon:

mEtSearchbar.clearFocus();
(new Handler()).postDelayed(new Runnable() {
public void run() {
mEtSearchbar.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 0, 0, 0));
mEtSearchbar.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0));
}
}, 100);

return true;
case R.id.newIcon:

return true;
case R.id.notificationIcon:

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

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// TODO Auto-generated method stub
inflater.inflate(R.menu.default_menu, menu);

mSearchbar = (MenuItem) menu.findItem(R.id.searchIcon);
View actionview = mSearchbar.getActionView();
mEtSearchbar = ((EditText) actionview.findViewById(R.id.search_editText));
ImageView searchImage = ((ImageView) actionview.findViewById(R.id.search_image));
searchImage.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View arg0) {

String s = mEtSearchbar.getText().toString();
Toast.makeText(getSherlockActivity(), "Searching for: " + s, Toast.LENGTH_SHORT)
.show();
}
});
super.onCreateOptionsMenu(menu, inflater);
}

最佳答案

这就是我最终使用的。

 @Override
public boolean onCreateOptionsMenu(Menu menu) {

super.onCreateOptionsMenu(menu);
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main, menu);

MenuItem searchItem = menu.findItem(R.id.search);

mSearchView = (SearchView) searchItem.getActionView();
setupSearchView(searchItem);

mSearchView.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// hide action item
if (menu != null) {
menu.findItem(R.id.notifications).setVisible(false);
menu.findItem(R.id.share).setVisible(false);
}

}
});
mSearchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
adapter.getFilter().filter("");
// re-show the action button
if (menu != null) {
menu.findItem(R.id.notifications).setVisible(true);
menu.findItem(R.id.share).setVisible(true);
}
return false;

}
});
return true;
}

private void setupSearchView(MenuItem searchItem) {
//code
}

关于android-actionbar - 打开 ActionLayout 时隐藏菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com