您正在寻找的是一个ViewPager
. 我制作了一个小样本来向您展示如何做出所需的行为:
private class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if (position == 0) {
return StarterFragment.newInstance(R.id.viewPagerIdFromTheLayout);
} else {
return NormalFragment.newInstance(position);
}
}
@Override
public int getCount() {
return 5;
}
}
public static class StarterFragment extends ListFragment {
public static StarterFragment newInstance(int pagerId) {
StarterFragment sf = new StarterFragment();
Bundle args = new Bundle();
args.putInt("pagerId", pagerId);
sf.setArguments(args);
return sf;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
((ViewPager) getActivity().findViewById(
getArguments().getInt("pagerId"))).setCurrentItem(position,
true);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, new String[] { "None",
"First Page", "Second Page", "Third Page", "Forth Page" }));
}
}
public static class NormalFragment extends Fragment {
public static NormalFragment newInstance(int position) {
NormalFragment nf = new NormalFragment();
Bundle args = new Bundle();
args.putInt("position", position);
nf.setArguments(args);
return nf;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
TextView tv = new TextView(getActivity());
tv.setText("Fragment no." + getArguments().getInt("position"));
return tv;
}
}
代码是这样的。ViewPager
您将使用上面看到的适配器创建一个。在这种情况下,ViewPager
您将有两种类型Fragments
,第一种具有所有方向性Buttons
,另一种类型Fragments
是滚动到的法线。为简单起见,我使用了ListFragment
,您可以使用自己的布局与Buttons
,您可以轻松地调整代码。为此,Fragment
您将传递ViewPager
from 的idFragmentActivity
以供以后使用。当用户Buttons
从第一个中单击其中一个时Fragment
,在 that 的onClick
方法中Button
,您将使用getActivity()
andfindViewById
找到ViewPager
并使用其setCurrentItem(position, true)
上的方法滚动到该方法Fragment
。因为ViewPager
仍然可以在Fragments
.