当我们执行addTab方法添加Tab的时候,最后会调用到
   
    dispatchTabSelected
   
   方法,在
   
    dispatchTabSelected
   
   方法里面调用
   
    addOnTabSelectedListener
   
   的
   
    onTabSelected()
   
   方法。但是这个时候,mSelectedListeners 为空(因为这个时候我们还没有设置OnTabSelectedListener),因此,就没有回调到
   
    onTabSelected
   
   。
  
  
   
    解决方案:
   
  
  
   
    1.先设置TabLayout监听事件
   
  
  
   
    2.然后再初始添加Tab
   
  
  当我们执行addTab方法添加Tab的时候,最后会调用到 dispatchTabSelected方法,在dispatchTabSelected方法里面调用addOnTabSelectedListener 的onTabSelected()方法。但是这个时候,mSelectedListeners 为空(因为这个时候我们还没有设置OnTabSelectedListener),因此,就没有回调到onTab...
  
   哎,造化弄人,帮一个粉丝改代码,硬是报错,改半天改不出个所以然…很是郁闷。
后来发现,是因为版本问题= =,我的版本比较低,是
   
    android
   
   包,他的版本高,是
   
    android
   
   x包,这就导致依赖导入的包不一样,并且引入
   
    Tabl
   
   
    ay
   
   out和
   
    View
   
   
    Page
   
   r的方式也不一样了!
   
    Android
   
   X中使用
   
    TabL
   
   
    ay
   
   out需要导入的依赖
implementation "com.google.
   
    android
   
   .m...
  
  布局代码:activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearL
  
   ay
  
  out xmlns:
  
   android
  
  ="http://schemas.
  
   android
  
  .com/apk/res/
  
   android
  
  "
    xmlns:app="http://schemas.
  
   android
  
  .com/apk/res-auto"
    xmlns:tools="http
  
   最近在使用
   
    TabL
   
   
    ay
   
   out+
   
    View
   
   
    Page
   
   r+
   
    fragment
   
   时,发现个问题,
   
    TabL
   
   
    ay
   
   out中
   
    Tab
   
   始终
   
    无法
   
   点击,最后网上查找半天才发现是布局问题,原来布局是
<?xml version="1.0" encoding="utf-8"?>
<
   
    android
   
   x.constraintl
   
    ay
   
   out.widget.ConstraintL
   
    ay
   
   out xmlns:
   
    android
   
   ="http://schemas.
   
    android
   
   .com/apk/res/
   
    android
   
   "
    xmlns:app=
  
  
   
    开发
   
   中遇到了个问题就是
   
    Fragment
   
   嵌套
   
    View
   
   
    Page
   
   
    View
   
   
    page
   
   再嵌套
   
    Fragment
   
   然后首次进入时能够正常显示  然后同一个Activity里切换后 再回来就看不到了  
然后百度了以后才知道在
   
    View
   
   
    Page
   
   里的要用 getChlid
   
    Fragment
   
   Manager() 不要用getSupport
   
    Fragment
   
   Manager()   不然会造成数据丢失  也就不显示了
   
    安卓第二次进入
    
     view
    
    
     Page
    
    r的时候 ,
    
     fragment
    
    不显示
我之前这样写的
 get
    
     Fragment
    
    Manager().beginTransaction().replace(R.id.container,new Code
    
     Fragment
    
    ()).commit();
        iv_code.setOnClickListener(v->{
            getSupport
    
     Fragment
    
    Manager().beginTransaction().replace(R.id.conta
   
   
    写一个demo时发现,其中
    
     TabL
    
    
     ay
    
    out作为底部导航栏,
    
     默认
    
    
     选中
    
    竟然
    
     无法
    
    回调on
    
     Tab
    
    Selected,而选择其他Position时,可以正常回调回来
原因是因为我们是先add
    
     Tab
    
    这个时候还没有绑定回调方法,所以应该是先是设置回调,而后add
m
    
     TabL
    
    
     ay
    
    out = find
    
     View
    
    ById(R.id.
    
     tab
    
    _l
    
     ay
    
    out);
        m
    
     TabL
    
    
     ay
    
    out.addOn
    
     Tab
    
    SelectedListener(new
    
     TabL
    
    
     ay
    
    out.On
    
     Tab
    
    SelectedListen
   
   
    1.
    
     tabl
    
    
     ay
    
    out的
    
     tab
    
    
     选中
    
    的
    
     监听
    
    addOn
    
     Tab
    
    SelectedListener项目中的界面需要用
    
     view
    
    
     page
    
    r+
    
     tabl
    
    
     ay
    
    out+
    
     fragment
    
    来实现 实现起来相对来说很简单,但是现在有的需求是在
    
     第一个
    
    
     fragment
    
    的外面显示一个按钮,在其他的页面不显示这个时候就用到了这个
    
     监听
    
    方法,先看一下图片听方法,先看一下图片 图中可以看到只有学生界面才有筛选按钮 但是后面都没有 一切bb都是没有用的 上代码
2.修改
    
     tabl
    
    
     ay
    
    out的下划线指定宽度
加上去就搞定
 当然了 具体可以参
   
   
    最近在做项目的时候,遇到了
    
     TabL
    
    
     ay
    
    out +
    
     View
    
    
     Page
    
    r2 +
    
     Fragment
    
    的技术实现。一般
    
     TabL
    
    
     ay
    
    out自带的
    
     默认
    
    字体并不能满足设计老师的需求。尽管有 app:
    
     tab
    
    TextAppearance 这个属性可以自定义
    
     默认
    
    的大小,但往往也是
    
     无法
    
    达到预期的效果。因此我们需要对
    
     TabL
    
    
     ay
    
    out的
    
     Tab
    
    进行一个自定义的样式,具体的方式网上很多都可以查到,核心做法就是用自定义的
    
     View
    
    赋值给
    
     TabL
    
    
     ay
    
    out的custom
    
     View
    
    。具体代码如下:
     list?.forEach { d
   
   
    最早是用
    
     VIew
    
    
     Page
    
    +
    
     TabL
    
    
     ay
    
    out 搭建的  ,
官方为何要用
    
     View
    
    
     Page
    
    2 替换
    
     View
    
    
     Page
    
    ?
    
     view
    
    
     page
    
    r和
    
     view
    
    
     page
    
    r2原理和使用
去年年初 google官网上更新了
    
     view
    
    
     page
    
    r2, 支持垂直滚动, 重写之前的
    
     view
    
    
     page
    
    r.
我们以前项目中使用的是
    
     View
    
    
     page
    
    最近替换为
    
     View
    
    
     Page
    
    2
首先你会发现问题所在,解决,解决不了?
换控件,升级控件,解决问题,代码优美简洁。
    
     View
    
    
     Page
    
    r2是Google 在
    
     android
    
    x 组件包里增
   
   
    
     view
    
    
     page
    
    r+
    
     tabl
    
    
     ay
    
    out都不陌生了。在很多地方都有用到过。这两天碰到个需求要求点击
    
     tabl
    
    
     ay
    
    out时
    
     出现
    
    下拉框选择分类然后动态刷新
    
     view
    
    
     page
    
    r的当前界面。
首先对
    
     view
    
    
     page
    
    r+
    
     tabl
    
    
     ay
    
    out做一个简单用法的总结。
1、在界面布局文件xml中添加
      <
    
     android
    
    .support.design.widget.
    
     TabL
    
    
     ay
    
    out
    
     好的,以下是一个
     
      Android
     
     
      开发
     
     中使用
     
      TabL
     
     
      ay
     
     out 和
     
      View
     
     
      Page
     
     r 的例子:
1. 在布局文件中添加
     
      TabL
     
     
      ay
     
     out 和
     
      View
     
     
      Page
     
     r:
<
     
      android
     
     .support.design.widget.CoordinatorL
     
      ay
     
     out
    xmlns:
     
      android
     
     ="http://schemas.
     
      android
     
     .com/apk/res/
     
      android
     
     "
    xmlns:app="http://schemas.
     
      android
     
     .com/apk/res-auto"
     
      android
     
     :l
     
      ay
     
     out_width="match_parent"
     
      android
     
     :l
     
      ay
     
     out_height="match_parent">
    <
     
      android
     
     .support.design.widget.AppBarL
     
      ay
     
     out
     
      android
     
     :l
     
      ay
     
     out_width="match_parent"
     
      android
     
     :l
     
      ay
     
     out_height="wrap_content">
        <
     
      android
     
     .support.design.widget.
     
      TabL
     
     
      ay
     
     out
     
      android
     
     :id="@+id/
     
      tab
     
     _l
     
      ay
     
     out"
     
      android
     
     :l
     
      ay
     
     out_width="match_parent"
     
      android
     
     :l
     
      ay
     
     out_height="wrap_content"
            app:
     
      tab
     
     Gravity="fill"
            app:
     
      tab
     
     Mode="fixed"/>
    </
     
      android
     
     .support.design.widget.AppBarL
     
      ay
     
     out>
    <
     
      android
     
     .support.v4.
     
      view
     
     .
     
      View
     
     
      Page
     
     r
     
      android
     
     :id="@+id/
     
      view
     
     _
     
      page
     
     r"
     
      android
     
     :l
     
      ay
     
     out_width="match_parent"
     
      android
     
     :l
     
      ay
     
     out_height="match_parent"
        app:l
     
      ay
     
     out_behavior="@string/appbar_scrolling_
     
      view
     
     _behavior"/>
</
     
      android
     
     .support.design.widget.CoordinatorL
     
      ay
     
     out>
2. 在 Activity 中设置
     
      TabL
     
     
      ay
     
     out 和
     
      View
     
     
      Page
     
     r:
public class MainActivity extends AppCompatActivity {
    private
     
      TabL
     
     
      ay
     
     out m
     
      TabL
     
     
      ay
     
     out;
    private
     
      View
     
     
      Page
     
     r m
     
      View
     
     
      Page
     
     r;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContent
     
      View
     
     (R.l
     
      ay
     
     out.activity_main);
        m
     
      TabL
     
     
      ay
     
     out = (
     
      TabL
     
     
      ay
     
     out) find
     
      View
     
     ById(R.id.
     
      tab
     
     _l
     
      ay
     
     out);
        m
     
      View
     
     
      Page
     
     r = (
     
      View
     
     
      Page
     
     r) find
     
      View
     
     ById(R.id.
     
      view
     
     _
     
      page
     
     r);
        setup
     
      View
     
     
      Page
     
     r(m
     
      View
     
     
      Page
     
     r);
        m
     
      TabL
     
     
      ay
     
     out.setupWith
     
      View
     
     
      Page
     
     r(m
     
      View
     
     
      Page
     
     r);
    private void setup
     
      View
     
     
      Page
     
     r(
     
      View
     
     
      Page
     
     r
     
      view
     
     
      Page
     
     r) {
     
      View
     
     
      Page
     
     rAdapter adapter = new
     
      View
     
     
      Page
     
     rAdapter(getSupport
     
      Fragment
     
     Manager());
        adapter.add
     
      Fragment
     
     (new
     
      Fragment
     
     1(), "标签1");
        adapter.add
     
      Fragment
     
     (new
     
      Fragment
     
     2(), "标签2");
        adapter.add
     
      Fragment
     
     (new
     
      Fragment
     
     3(), "标签3");
     
      view
     
     
      Page
     
     r.setAdapter(adapter);
    private class
     
      View
     
     
      Page
     
     rAdapter extends
     
      Fragment
     
     
      Page
     
     rAdapter {
        private final List<
     
      Fragment
     
     > m
     
      Fragment
     
     List = new Arr
     
      ay
     
     List<>();
        private final List<String> m
     
      Fragment
     
     TitleList = new Arr
     
      ay
     
     List<>();
        public
     
      View
     
     
      Page
     
     rAdapter(
     
      Fragment
     
     Manager manager) {
            super(manager);
        @Override
        public Frag