在Android开发中,我们经常会遇到要使用fragment的情况,比如说首页,比如说订单管理等等,下面我们来讲讲动态添加fragment。
本文讲的是如何实现动态添加Fragment,标题栏可动态添加,fragment可动态添加,非常的灵活,同时加了线条滑动效果,看效果图,效果图不是gif的,所以如果想看具体效果,可以下载本项目源码自己运行查看,项目是用android studio开发,使用eclipse的朋友可以移植过去,非常简单,欢迎大家一起交流学习。
下面我们来看看具体实现,先看activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<pts.com.fragmentaddproject.utils.SlidingTabLayout
android:id="@+id/tab_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/color_DEDEDE" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager_fragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
</android.support.v4.view.ViewPager>
</LinearLayout>
在这里我使用了一个自定义布局,就是SlidingTabLayout,这个是用来添加标题栏的,对应到fragment,同时添加下划线滑动效果,具体代码可下载项目查看,这里就不多说了。
接下来我们看MainActivity的代码:
/**
* 实现动态添加Fragment,头部可动态添加,fragment可动态添加,非常的灵活,
* 同时加了线条滑动效果
*/
public class MainActivity extends AppCompatActivity {
SlidingTabLayout mTab;
ViewPager mViewPager;
FragmentPagerAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView(){
mTab = (SlidingTabLayout) findViewById(R.id.tab_fragment);
mViewPager = (ViewPager) findViewById(R.id.viewpager_fragment);
mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
// titles作为滑动标题栏,动态添加数据进去就可以了
String[] titles = { "全部", "待付款", "待发货", "待收货", "待评价" };
@Override
public Fragment getItem(int position) { // 开始动态添加fragment
FragmentTest fragment = new FragmentTest();
Bundle bundle = new Bundle();
bundle.putInt("position", position);
bundle.putString("title", titles[position]);
fragment.setArguments(bundle);
return fragment;
}
@Override
public int getCount() { // 添加fragment个数
return titles.length;
}
@Override
public CharSequence getPageTitle(int position) { // 添加fragment标题
return titles[position];
}
};
mViewPager.setAdapter(mAdapter);
mTab.setCustomTabView(R.layout.custom_tab, 0); // 添加头部xml,可自定义
mTab.setSelectedIndicatorColors(0xffe8303d); // 下滑线的颜色
mTab.setBackgroundColor(0xffffffff); // 头部背景颜色
mTab.setViewPager(mViewPager);
}
MainActivity是不是非常的简单呢,下面我们来看看Fragment的代码:
public class FragmentTest extends Fragment {
TextView mTxtNumber;
int mPosition;
String mTitle = "";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = View.inflate(getActivity(), R.layout.fragment_tab, null);
mPosition = getArguments().getInt("position");
mTitle = getArguments().getString("title");
mTxtNumber = (TextView) view.findViewById(R.id.txt_fragment_number);
mTxtNumber.setText("第" + mPosition + "个fragment==" + mTitle);
return view;
}
}
好了,动态添加fragment的功能到这里就已经实现了,代码是不是非常的简单呢,具体需要做成什么样式由你们自己去修改了,我这里是拿订单管理模块来作为例子,具体代码见下方下载链接。
完整项目下载链接:http://download.csdn.net/detail/emptoney/9753185