Android - 不同的 ActionBar 取决于选项卡中的 Fragment Activity
Android - Different ActionBar depending on the Fragment in a tabbed Activity
标题说明了一切。我想知道是否可以根据选项卡 Activity 上显示的片段修改操作栏项目。如果可能的话,我应该怎么做这些东西?
你可以做到这一点。
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
这是其中一种可能。希望对您有所帮助
您可以使用 Toolbar
而不是 ActionBar
。
http://javatechig.com/android/android-lollipop-toolbar-example
您可以根据需要制作任意数量的工具栏,并按照 Сергей Боиштян 描述的方式在 tabHost.setOnTabChangedListener(...)
上显示和隐藏它们。
我发现 Toolbars 比 Actionbars
更容易定制,也更简洁
标题说明了一切。我想知道是否可以根据选项卡 Activity 上显示的片段修改操作栏项目。如果可能的话,我应该怎么做这些东西?
你可以做到这一点。
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 这是其中一种可能。希望对您有所帮助
您可以使用 Toolbar
而不是 ActionBar
。
http://javatechig.com/android/android-lollipop-toolbar-example
您可以根据需要制作任意数量的工具栏,并按照 Сергей Боиштян 描述的方式在 tabHost.setOnTabChangedListener(...)
上显示和隐藏它们。
我发现 Toolbars 比 Actionbars