我一直在努力在 Android Studio 中创建ViewPager
很长一段时间,但我刚刚意识到您可以使用预先配置的{{1}自动创建一个}。
使用Activity
创建了Tabbed Activity
:Action Bar Tabs
后,我最终得到了两个XML布局:ViewPager
和activity_main.xml
。但是,我不确定如何独立更改每个片段。每当我在fragment_main.xml
中添加TextView
时,它就会出现在所有三个预定义的部分中。
如何在不影响其他两个部分的情况下更改一个部分?!
答案 0 :(得分:1)
您应该阅读Creating Swipe Views with Tabs。这将向您展示如何使用ViewPager
创建标签。特别是,您需要一个PagerAdapter
,负责为每个选项卡创建正确的片段。
答案 1 :(得分:-1)
在FragmentPagerAdapter中的方法getItem(int position)中,此行PlaceholderFragment.newInstance(position + 1)决定它返回的片段。 只有一种类型的Fragment,返回的片段具有相同的布局,但在PlaceholderFragment中,您可以根据位置更改它的布局,例如:
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
/**
* The fragment argument representing the section number for this
* fragment.
*/
private static final String ARG_SECTION_NUMBER = "section_number";
public PlaceholderFragment() {
}
/**
* Returns a new instance of this fragment for the given section
* number.
*/
public static PlaceholderFragment newInstance(int sectionNumber) {
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
private int mPosition;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPosition = getArguments().getInt(ARG_SECTION_NUMBER);
}
private View mRootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
switch (mPosition) {
case 0:
mRootView = inflater.inflate(R.layout.fragment_layout_0, container, false);
break;
case 1:
mRootView = inflater.inflate(R.layout.fragment_layout_1, container, false);
break;
case 2:
mRootView = inflater.inflate(R.layout.fragment_layout_2, container, false);
break;
}
TextView textView = (TextView) mRootView.findViewById(R.id.section_label);
textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER)));
return mRootView;
}
}