-
- 一、父Fragment加载子Fragment
-
- ① Fragment适配器
-
② TabLayout组合ViewPager
-
二、抽屉菜单
-
三、行政区搜索
-
四、行政区展示
-
- ① 省市级联
-
② 返回上一级
-
五、地址转坐标
-
六、切换地图中心
-
七、查看天气
-
八、加载弹窗
-
九、源码
===============================================================
在上一篇文章中完成了高德地图的使用及地图天气的显示,现在地图上可以查看当前的所在地天气,本文中将对国内其他城市进行切换,地图进行移动,天气查询。同时完成Fragment中再加载Fragment,通过TabLayout和ViewPager进行切换。
===============================================================
从易到难,先完成Fragment中加载Fragment,现在HomeActivity中加载了三个Fragment,其中NewsFragment和VideoFragment的性质有一些相近,因此我们可以把这两个Fragment放到一个Fragment中去加载显示,这样做可以节省HomeActivity中空间。
很简单,我们先在fragment包下创建一个InfoFragment,对应的布局info_fragment.xml,代码如下:
<?xml version="1.0" encoding="utf-8"?><layout xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:app=“http://schemas.android.com/apk/res-auto”
xmlns:tools=“http://schemas.android.com/tools”>
<RelativeLayout
android:layout_width=“match_parent”
android:layout_height=“match_parent”
tools:context=“.ui.fragment.InfoFragment”>
<com.google.android.material.tabs.TabLayout
android:id=“@+id/tab”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
app:tabIndicatorColor=“@color/purple_500”
app:tabTextColor=“@color/purple_500” />
<androidx.viewpager.widget.ViewPager
android:id=“@+id/vp”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:layout_below=“@+id/tab” />
① Fragment适配器
然后我们创建一个Fragment适配器,在adapter包创建InfoFragmentAdapter类,代码如下:
public class InfoFragmentAdapter extends FragmentPagerAdapter {
String titleArr[];
List mFragmentList;
public InfoFragmentAdapter(FragmentManager fm, List list, String[] titleArr) {
super(fm);
mFragmentList = list;
this.titleArr = titleArr;
}
@Override
public Fragment getItem(int i) {
return mFragmentList.get(i);
}
@Override
public int getCount() {
return mFragmentList != null ? mFragmentList.size() : 0;
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titleArr[position];
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
// super.destroyItem(container, position, object);
}
}