我有一个带有3个片段的ViewPager。我能够仅针对我想要的片段选择性地设置操作栏菜单选项。
同样,我想通过ActionBar中的Spinner提供一个导航列表。再次,导航列表应仅针对ViewPager的片段之一出现,而不针对所有片段出现。但是,我对此的尝试失败了。导航列表显示在操作栏中,但对于所有片段都保留在那里。
以下是我在ViewPager中使用的片段之一。我希望仅当我在视图中滑动此片段时才显示导航列表。
public class TransactionsFragment extends SherlockFragment implements
ActionBar.OnNavigationListener{
private ActionBar mActionBar;
@SuppressLint("NewApi")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(
R.layout.fragment_transactions, container, false);
// Set up the action bar to show a dropdown list
mActionBar = getActivity().getActionBar();
mActionBar.setDisplayShowTitleEnabled(false);
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
final String[] dropdownValues = {"Test","Old"};
// Specify a SpinnerAdapter to populate the dropdown list
ArrayAdapter<String> adapter = null;
if(android.os.Build.VERSION.SDK_INT >= 14) {
adapter = new ArrayAdapter<String>(mActionBar.getThemedContext(),
android.R.layout.simple_spinner_item, android.R.id.text1,
dropdownValues);
} else {
adapter = new ArrayAdapter<String>(getActivity().getBaseContext(),
android.R.layout.simple_spinner_item, android.R.id.text1,
dropdownValues);
}
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Set up the dropdown list navigation in the action bar.
mActionBar.setListNavigationCallbacks(adapter, this);
return rootView;
}
如何限制仅在可见此片段时才显示导航列表?
最佳答案
当片段变为可见/不可见时,将触发Fragment#setUserVisibleHint(boolean isVisibleToUser)
。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// enable action bar list navigation
} else {
// disable action bar list navigation
}
}