如何做展示型网站,如何自己做门户网站,开发公司不动产登记费入什么科目,系统优化升级95%后不动了如图#xff0c;上方的导航栏是不是很酷#xff0c;首先它本身是可以滑动的#xff0c;然后右侧有一个可以查看所有Tab的按钮#xff0c;然后他和下方的ViewPager还是联动的#xff0c;可以通过点击它切换ViewPager#xff0c;并且ViewPager滑动#xff0c;它也会随着改…如图上方的导航栏是不是很酷首先它本身是可以滑动的然后右侧有一个可以查看所有Tab的按钮然后他和下方的ViewPager还是联动的可以通过点击它切换ViewPager并且ViewPager滑动它也会随着改变还有指示条。如果要实现这个效果怎么办当然完全可以自己定义实现但是有太多的细节需要去考虑到还得手动调整指示条的位置这还不是问题问题是滑动到头怎么办而且需求要求Tab项不确定指示条长度就不一样滑动范围也不确定不过还是可以实现的。但是想想就觉得代码太冗余了...于是我想可不可以用ViewPager就能实现上方的Tab用PagerTabStrip去实现但是一想不行啊右侧的查看更多怎么办后来一想我可以用FrameLayout来实现因为ViewPager和PagerTabStrip是一体的所以我把整个ViewPager先放入FrameLayout里然后在右上角摞上一个ImageView就可以实现效果了联动和效果都有了。可是问题又出现了PagerTabStrip的tab之间的距离他封装的有一个最小的距离而且无法修改所以他的setTextSpacing方法只能调整的越来越大却不能比他设置的最小值还小所以我就...所以这条路就走不通了。我记得我之前实现过可以让标题栏收缩在屏幕之中显示的然后我就回去看了笔记果然不过不是只用ViewPager就能实现的而是用TabLayout和ViewPager结合来实现的。首先在xml中定义TabLayout(和“查看更多”的按钮一块布好局)android:layout_widthmatch_parentandroid:layout_height40dpandroid:orientationhorizontalandroid:idid/tabLayoutandroid:layout_width0dpandroid:layout_heightmatch_parentandroid:layout_weight1android:backgroundcolor/mainapp:tabTextAppearancestyle/TabStyleandroid:idid/moreandroid:layout_width40dpandroid:layout_height40dpandroid:backgrounddrawable/more_dividerandroid:padding10dpandroid:srcdrawable/more/ 然后代码中设置//下面这么写如果和ViewPager一绑定就会不显示文字因为他会先remove掉之前的所有Tab然后new把ViewPager的标题拿//过来用倘若你的ViewPager没有设置标题则就会看不见了// //调接口获取所有咨询标题// mTitles.add(昌吉);// mTitles.add(体育);// mTitles.add(军事);// mTitles.add(历史);// mTitles.add(轻松一刻);// mTitles.add(NBA);// //给TabLayout添加标题// for (int i 0; i mTitles.size(); i) {// mTabLayout.addTab(mTabLayout.newTab().setText(mTitles.get(i)));// }//使Tab可滚动mTabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);//设置指示条颜色mTabLayout.setSelectedTabIndicatorColor(Color.parseColor(#418DEB));//设置文字颜色mTabLayout.setTabTextColors(Color.BLACK,Color.parseColor(#418DEB));//将ViewPager和TabLayout联系起来mTabLayout.setupWithViewPager(mViewpager); 这是我一开始这么写的发现Tab的文字不见了但是指示条还在然后还可以正常滑动而且不蹦。然后我把//将ViewPager和TabLayout联系起来mTabLayout.setupWithViewPager(mViewpager);这一句屏蔽了发现又能显示了然后就开始百度发现了大神的解决方法-点击打开链接原来如果你和ViewPager绑定之后他会先remove掉之前的所有Tab然后new出新的Tab把ViewPager的标题拿过来用倘若你的ViewPager没有设置标题则就会出现看不见了文字的情况了。所以改成下面这样写//使Tab可滚动mTabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);//设置指示条颜色mTabLayout.setSelectedTabIndicatorColor(Color.parseColor(#418DEB));//设置文字颜色mTabLayout.setTabTextColors(Color.BLACK,Color.parseColor(#418DEB));//将ViewPager和TabLayout联系起来mTabLayout.setupWithViewPager(mViewpager);//在上一行代码“mTabLayout.setupWithViewPager(mViewpager);”之后添加TabmTitles.add(昌吉);mTitles.add(体育);mTitles.add(军事);mTitles.add(历史);mTitles.add(轻松一刻);mTitles.add(NBA);//这里的mViews一定要和mTitle长度一致(从同一个接口返回的List里取)for(inti 0;i mViews.size();i) {mTabLayout.getTabAt(i).setText(mTitles.get(i));}也可以在xml中设置TabLayout的属性app:tabTextAppearancestyle/TabStyle到此完美实现效果最后提一下ViewPager添加View尽量不要用inflate来添加改用在代码中new的形式添加可以少定义好多布局而且inflate会很耗时间提供一种思路private voidinitViews() {mViews newArrayList();for(inti 0;i 6;i) {//要添加的ViewLinearLayout pager newLinearLayout(getActivity());LinearLayout.LayoutParams params newLinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);pager.setOrientation(LinearLayout.HORIZONTAL);//官方下拉刷新finalSwipeRefreshLayout refreshLayout newSwipeRefreshLayout(getActivity());refreshLayout.setLayoutParams(params);refreshLayout.setOnRefreshListener(newSwipeRefreshLayout.OnRefreshListener() {Overridepublic voidonRefresh() {refreshLayout.setRefreshing(false);}});//刷新的时候变化的颜色refreshLayout.setColorSchemeColors(Color.parseColor(#418DEB),Color.BLUE,Color.BLACK);//刷新里面的ListViewListView listView newListView(getActivity());listView.setLayoutParams(params);MyBaseAdapter mListViewAdapter newMyBaseAdapter();listView.setAdapter(mListViewAdapter);refreshLayout.addView(listView);pager.addView(refreshLayout);mViews.add(pager);}} 来自我的工作项目掌上昌吉。