标题说明了一切。我想知道是否可以修改操作栏项目,具体取决于选项卡式活动上显示的片段。如果有可能我该怎么做呢?
答案 0 :(得分:1)
您可以使用Toolbar
代替ActionBar
http://javatechig.com/android/android-lollipop-toolbar-example
您可以根据需要制作任意数量的工具栏,并在tabHost.setOnTabChangedListener(...)
上显示和隐藏它们СергейБоиштян描述的方式。
我发现工具栏比Actionbars更容易定制,更简单。
答案 1 :(得分:0)
你可以这样做。
public class UserTabsActivity extends BaseActivity implements TabHost.OnTabChangeListener {
private MenuItem settingsItem;
private MenuItem actionSearch;
private SearchView searchView;
private SearchView.OnQueryTextListener onQueryTextListener;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.user_tabs_menu, menu);
settingsItem = menu.findItem(R.id.settings_item);
settingsItem.setOnMenuItemClickListener(this);
actionSearch = menu.findItem(R.id.action_search);
searchView = (SearchView) actionSearch.getActionView();
searchView.setQueryHint(Constants.USER_HINT);
searchView.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS);
searchView.setOnQueryTextListener(onQueryTextListener);
return true;
}
@Override
public void onTabChanged(String tabId) {
customize(tabId)
}
public void customize(String currentTab) {
switch (currentTab) {
case "sometag":
settingsItem.setVisible(false);
actionSearch.setVisible(true);
break;
default:
settingsItem.setVisible(true);
actionSearch.setVisible(false);
}
}
在你片段中你可以写一些逻辑
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
FragmentTabHost tabHost = new FragmentTabHost(getActivity());
tabHost.setup(getActivity(), getChildFragmentManager(), android.R.id.content);
tabHost.addTab(tabHost.newTabSpec("users").setIndicator("ПОЛЬЗОВАТЕЛИ"), SomeFragment.class, null);
tabHost.addTab(tabHost.newTabSpec("posts").setIndicator("ПОСТЫ"), SomeFragment.class, null);
tabHost.setOnTabChangedListener((TabHost.OnTabChangeListener) getActivity());
return tabHost;
}
在该代码中是最重要的tabHost.setOnTabChangedListener(..)和 UserTabsActivity扩展BaseActivity实现TabHost.OnTabChangeListener 这是其中一种可能性。我希望,这是有帮助的