美文网首页
VerticalTabLayout(垂直ToolBar)和Rec

VerticalTabLayout(垂直ToolBar)和Rec

作者: 规诫 | 来源:发表于2019-11-01 19:33 被阅读0次

布局文件

//RecyclerView和VerticalTabLayout布局
   <LinearLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent">
   <q.rorbin.verticaltablayout.VerticalTabLayout
       android:id="@+id/tab"
       android:layout_width="0dp"
       android:layout_weight="1"
       android:layout_height="match_parent"
       android:scrollIndicators="bottom"
       android:fitsSystemWindows="true"
       app:indicator_corners="5dp"
       app:indicator_width="2dp"
       android:background="@color/cececce"
       app:indicator_color="#a41d1d"
       app:indicator_gravity="left"
       app:tab_height="50dp"
       app:tab_mode="scrollable" />

   <android.support.v7.widget.RecyclerView
       android:id="@+id/rlv"
       android:layout_width="0dp"
       android:layout_weight="4"
       android:layout_height="match_parent"/>
 </LinearLayout>

Activity或Fragment使用过程

public class MoveFragment extends BaseFragment<MoveP, MoveV> implements MoveV {
   private static final String TAG = "MoveFragment";
   @BindView(R.id.tab)
   VerticalTabLayout tab;
   @BindView(R.id.rlv)
   RecyclerView rlv;
   @BindView(R.id.flbtn)
   FloatingActionButton flbtn;
   private LinearLayoutManager mLayoutManager;
   private NavigationAdapter mRecyclerAdapter;
   private RadioGroup rgtbn;


   protected void initData() {
       presenter.getdata();
   }

   @Override
   protected MoveP initpresenter() {
       return new MoveP();
   }

   @Override
   protected int getlayout() {
       return R.layout.move;
   }

   @Override
   public void show(MoveBean bean) {
       final List<MoveBean.DataBean> list = bean.getData();
       Log.i(TAG,list.toString());
       //创建布局管理器
       mLayoutManager = new LinearLayoutManager(getContext());
       //设置布局管理器
       rlv.setLayoutManager(mLayoutManager);
       //创建适配器(适配器代码在下面)
       mRecyclerAdapter = new NavigationAdapter(list, getContext());
       //绑定适配器
       rlv.setAdapter(mRecyclerAdapter);

       //绑定VerticalTabLayout适配器
       tab.setTabAdapter(new TabAdapter() {
           @Override
           public int getCount() {
               return list.size();
           }

           @Override
           public ITabView.TabBadge getBadge(int position) {
               return null;
           }

           @Override
           public ITabView.TabIcon getIcon(int position) {
               return null;
           }

           @Override
           public ITabView.TabTitle getTitle(int position) {
               return new ITabView.TabTitle.Builder()
                       .setContent(list.get(position).getName())
                       .setTextColor(0xFF36BC9B, 0xFF757575)
                       .build();
           }

           @Override
           public int getBackground(int position) {
               return 0;
           }
       });

       //RecyclerView和tab栏联动
       rlv.addOnScrollListener(new RecyclerView.OnScrollListener() {
           @Override
           public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
               super.onScrollStateChanged(recyclerView, newState);
               LinearLayoutManager manager = (LinearLayoutManager) rlv.getLayoutManager();
               tab.setTabSelected(manager.findFirstVisibleItemPosition());
           }
       });
       //tab栏和RecyclerView联动
       tab.addOnTabSelectedListener(new VerticalTabLayout.OnTabSelectedListener() {
           @Override
           public void onTabSelected(TabView tab, int position) {
               LinearLayoutManager layoutManager = (LinearLayoutManager) rlv.getLayoutManager();
               layoutManager.scrollToPositionWithOffset(position, 0);
           }

           @Override
           public void onTabReselected(TabView tab, int position) {

           }
       });
   }

}

适配器

public class NavigationAdapter extends RecyclerView.Adapter {

   public List<MoveBean.DataBean> list;
   private Context context;
   private List<MoveBean.DataBean.ArticlesBean> articles;

   public NavigationAdapter(List<MoveBean.DataBean> list, Context context) {
       this.list = list;
       this.context = context;
   }

   @NonNull
   @Override
   public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
       View inflate = LayoutInflater.from(context).inflate(R.layout.navigationitem, null);
       ViewHolder viewHolder = new ViewHolder(inflate);
       return viewHolder;
   }

   @Override
   public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
       ViewHolder viewHolder1 = (ViewHolder) viewHolder;
       viewHolder1.tv.setText(list.get(i).getName());
       articles = list.get(i).getArticles();
       for (int j = 0; j < articles.size(); j++) {
           TextView inflate = (TextView) View.inflate(context, R.layout.textview_item, null);
           //设置流式布局颜色变化
           Random random = new Random();
           int randomColor = 0x00ffffff | random.nextInt(0xffffff00);
           inflate.setBackgroundColor(randomColor);
           final String link = articles.get(j).getLink();
           final String title = articles.get(j).getTitle();
           inflate.setText(title);
           //添加流式布局
           viewHolder1.tabflowlayout.addView(inflate);
           //点击时间
           inflate.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {
                   Intent intent = new Intent(context, MoveWebActivity.class);
                   intent.putExtra("link", link);
                   intent.putExtra("title", title);
                   context.startActivity(intent);
               }
           });
       }

   }

   @Override
   public int getItemCount() {
       return list.size();
   }

   public void addData(List<MoveBean.DataBean> bean1) {
       //添加数据并刷新
       list.addAll(bean1);
       notifyDataSetChanged();
   }

   public static class ViewHolder extends RecyclerView.ViewHolder {
       public View rootView;
       public TextView tv;
       public FlowLayout tabflowlayout;

       public ViewHolder(View rootView) {
           super(rootView);
           this.rootView = rootView;
           this.tv = (TextView) rootView.findViewById(R.id.tv);
           this.tabflowlayout = (FlowLayout) rootView.findViewById(R.id.tabflowlayout);
       }
   }

}

navigationitem布局代码(流式布局)

<com.example.dell.big_wanandroid.utils.FlowLayout
           android:id="@+id/tabflowlayout"
           android:layout_marginTop="10dp"
           android:layout_marginLeft="20dp"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"/>

textview_item布局代码

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_margin="@dimen/dp_8"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text=""
   android:maxLines="1"
   android:ellipsize="end"
   android:gravity="center"
   android:paddingLeft="12dp"
   android:paddingRight="12dp"
   android:background="@drawable/textshape"
   android:paddingTop="2dp"
   android:paddingBottom="2dp"
   android:textColor="@color/gray"
   android:textSize="14sp"/>

相关文章

网友评论

      本文标题:VerticalTabLayout(垂直ToolBar)和Rec

      本文链接:https://www.haomeiwen.com/subject/dojqbctx.html