gpt4 book ai didi

android - 如何在仅在特定 fragment 上可见的 ViewPage 操作栏上添加导航列表?

转载 作者:行者123 更新时间:2023-11-29 17:59:50 24 4
gpt4 key购买 nike

我有一个包含 3 个 fragment 的 ViewPager。我可以只为我想要的 fragment 有选择地设置操作栏菜单选项。

同样,我想通过 ActionBar 中的 Spinner 提供一个导航列表。同样,导航列表应该只出现在 ViewPager 的一个 fragment 中,而不应该出现在所有 fragment 中。但是我的尝试失败了。导航列表出现在操作栏中,但对于所有 fragment 都保留在那里。

下面是我在 ViewPager 中使用的 fragment 之一。我希望导航列表仅在我在 View 中滑动此 fragment 时出现。

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 可见时显示?

最佳答案

我和 OP 有同样的需求,并使用了 Matthias 建议的方法,以及来自其他来源的位。对我来说,作为 Android 的新手,这是一个挑战。我将提供更多详细信息,这可能对通过搜索到达此处的其他人有所帮助。

这方面的所有代码都在显示导航微调器的一个 fragment 中。其他 fragment 没有困惑。

private ActionBar actionBar;


public void onResume() {
super.onResume();

if(actionBar==null) {

actionBar = getActivity().getActionBar();

// get spinner items defined in values/strings/dropdown
final String[] dropdownValues = getResources().getStringArray(R.array.dropdown);

// set up the actionbar appearance
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

// Specify a SpinnerAdapter to populate the dropdown list.
ArrayAdapter<String> aAdapter = new ArrayAdapter<String>(actionBar.getThemedContext(),
android.R.layout.simple_spinner_item, android.R.id.text1,dropdownValues);

aAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

// setup for callbacks to detect item selection
actionBar.setListNavigationCallbacks(aAdapter, this);
}
}

@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {

//System.err.println("Spinner selection: " + itemPosition);
//do stuff based on itemPosition

return false;
}

最后,打开和关闭导航微调器的更完整代码:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);

if (actionBar!=null) {
if (isVisibleToUser) {
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
}
else {
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
}
}
}

编辑:另外,Fragment 必须像这样实现 ActionBar.OnNavigationListener...

public class DisplayStuffFragment extends Fragment implements ActionBar.OnNavigationListener {

...
}

关于android - 如何在仅在特定 fragment 上可见的 ViewPage 操作栏上添加导航列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16864706/

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