Fragment和listview和viewpager创建微信发现界面
时间: 2023-10-23 08:23:40 浏览: 160
微信发现界面通常包含多个页面,例如朋友圈、看一看、搜一搜等。可以使用Fragment和ViewPager来实现这个界面。
首先,在布局文件中添加一个ViewPager控件和一个TabLayout控件,用于实现页面的滑动切换和标签的显示。
```
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
app:tabGravity="fill"
app:tabIndicatorColor="@color/colorPrimary"
app:tabMode="fixed"
app:tabSelectedTextColor="@color/colorPrimary"
app:tabTextColor="@color/black" />
```
接下来,创建多个Fragment类,分别对应不同的页面。例如,创建一个DiscoverFragment类用于显示“发现”页面的内容。
在DiscoverFragment类中,可以使用ListView控件来显示列表内容。在onCreateView()方法中,加载布局文件并初始化ListView控件。
```
public class DiscoverFragment extends Fragment {
private ListView mListView;
private List<String> mDataList = new ArrayList<>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_discover, container, false);
mListView = view.findViewById(R.id.list_view);
// 初始化数据
initData();
// 设置ListView适配器
ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(),
android.R.layout.simple_list_item_1, mDataList);
mListView.setAdapter(adapter);
return view;
}
// 初始化数据
private void initData() {
mDataList.add("朋友圈");
mDataList.add("扫一扫");
mDataList.add("摇一摇");
// ...
}
}
```
最后,在MainActivity中,创建PagerAdapter适配器,并将多个Fragment添加到ViewPager中。
```
public class MainActivity extends AppCompatActivity {
private ViewPager mViewPager;
private TabLayout mTabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mViewPager = findViewById(R.id.view_pager);
mTabLayout = findViewById(R.id.tab_layout);
// 创建PagerAdapter适配器
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager());
// 添加Fragment到ViewPager中
adapter.addFragment(new DiscoverFragment(), "发现");
adapter.addFragment(new MomentsFragment(), "朋友圈");
adapter.addFragment(new ReadFragment(), "看一看");
adapter.addFragment(new SearchFragment(), "搜一搜");
mViewPager.setAdapter(adapter);
mTabLayout.setupWithViewPager(mViewPager);
}
// 定义PagerAdapter适配器
private static class PagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mTitleList = new ArrayList<>();
public PagerAdapter(@NonNull FragmentManager fm) {
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mTitleList.add(title);
}
@NonNull
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return mTitleList.get(position);
}
}
}
```
这样,就可以使用Fragment和ViewPager来实现微信发现界面了。
阅读全文