第一步就是我们的主的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!--使用我们的viewpager和我们的tablayout制作我们的新闻专栏-->
<com.google.android.material.tabs.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="#3B0045"
app:tabTextColor="#000000"
app:tabSelectedTextColor="#000"
app:tabIndicatorHeight="2dp"
tools:ignore="MissingConstraints" />
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
主页面的java代码部分:
package com.example.news;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;
import android.os.Bundle;
import com.example.news.Fragment.GuangBoFragment;
import com.example.news.Fragment.JiCenFragment;
import com.example.news.Fragment.LuYouFragment;
import com.example.news.Fragment.NewsFragment;
import com.example.news.Fragment.ShiZhenFragment;
import com.example.news.Fragment.TvFragment;
import com.google.android.material.tabs.TabLayout;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private TabLayout tablayout;
private ViewPager viewpager;
private List<Fragment> fragments;
private List<String> titles;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//todo step 1:在我们的这个位置调用我们的并initviewpager方法
initViewPager();
}
private void initViewPager() {
// todo step 1:
tablayout = (TabLayout) findViewById(R.id.tablayout);
viewpager = (ViewPager) findViewById(R.id.viewpager);
// todo step 2:在我们的这个位置创建我们的列表然后的话将我们的数据存入进去
fragments = new ArrayList<>();
// 然后的话将我们的就是fragment的碎片添加进去
fragments.add(new NewsFragment());
fragments.add(new JiCenFragment());
fragments.add(new ShiZhenFragment());//todo 在我们的这个位置的话还是要自己创建对应标题的fragment
fragments.add(new GuangBoFragment());
fragments.add(new TvFragment());
fragments.add(new LuYouFragment());
//todo step3: 然后的话就是创建我们的就是fragment的啊主题
titles = new ArrayList<>();
titles.add("新闻");
titles.add("时政");
titles.add("广播");
titles.add("电视");
titles.add("旅游");
titles.add("视频");
// todo 关联我们的tablayout和我们的就是viewpager的碎片 step 5: 5555555
MyAdapter Adapter = new MyAdapter(getSupportFragmentManager());
viewpager.setAdapter(Adapter);
tablayout.setupWithViewPager(viewpager);
}
// todo step 4:创建我们的就是啊适配器
public class MyAdapter extends FragmentPagerAdapter{
public MyAdapter(@NonNull FragmentManager fm) {
super(fm); // todo 这个不变
}
@NonNull
@Override
public Fragment getItem(int position) {
return fragments.get(position); // todo item对应的位置
}
@Override
public int getCount() {
return fragments.size(); // todo fragment我们的碎片的数量
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
}
}
结果显示:
package com.example.news;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;
import android.os.Bundle;
import com.example.news.Fragment.GuangBoFragment;
import com.example.news.Fragment.JiCenFragment;
import com.example.news.Fragment.LuYouFragment;
import com.example.news.Fragment.NewsFragment;
import com.example.news.Fragment.ShiZhenFragment;
import com.example.news.Fragment.TvFragment;
import com.google.android.material.tabs.TabLayout;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private TabLayout tablayout;
private ViewPager viewpager;
private List<Fragment> fragments;
private List<String> titles;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//todo step 1:在我们的这个位置调用我们的并initviewpager方法
initViewPager();
}
private void initViewPager() {
// todo step 1:
tablayout = (TabLayout) findViewById(R.id.tablayout);
viewpager = (ViewPager) findViewById(R.id.viewpager);
// todo step 2:在我们的这个位置创建我们的列表然后的话将我们的数据存入进去
fragments = new ArrayList<>();
// 然后的话将我们的就是fragment的碎片添加进去
fragments.add(new NewsFragment());
fragments.add(new JiCenFragment());
fragments.add(new ShiZhenFragment());//todo 在我们的这个位置的话还是要自己创建对应标题的fragment
fragments.add(new GuangBoFragment());
fragments.add(new TvFragment());
fragments.add(new LuYouFragment());
//todo step3: 然后的话就是创建我们的就是fragment的啊主题
titles = new ArrayList<>();
titles.add("新闻");
titles.add("时政");
titles.add("广播");
titles.add("电视");
titles.add("旅游");
titles.add("视频");
// todo 关联我们的tablayout和我们的就是viewpager的碎片 step 5: 5555555
MyAdapter Adapter = new MyAdapter(getSupportFragmentManager());
viewpager.setAdapter(Adapter);
tablayout.setupWithViewPager(viewpager);
}
// todo step 4:创建我们的就是啊适配器
public class MyAdapter extends FragmentPagerAdapter{
public MyAdapter(@NonNull FragmentManager fm) {
super(fm); // todo 这个不变
}
@NonNull
@Override
public Fragment getItem(int position) {
return fragments.get(position); // todo item对应的位置
}
@Override
public int getCount() {
return fragments.size(); // todo fragment我们的碎片的数量
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position); // todo 这个一定要写不然的话就会显示不出你的新闻标题,因为源码中有一个remove方法会将你的新闻标题全部移除
}
}
}