Android自定义ViewPagerIndicator实现炫酷导航栏指示器(ViewPager+Fragment)

ViewPagerIndicator导航栏指示器运行效果:

实现这个效果,我是看了很多大神写的博客和视频后自己敲的,欢迎指正
github地址:https://github.com/dl10210950/TabViewPagerIndicator

自定义一个ViewPagerIndicator

自定义一个Indicator继承LinearLayout,在构造方法里面设置画笔的一些属性

public ViewPagerIndicator(Context context, AttributeSet attrs) {
 super(context, attrs);
 mPaint = new Paint();//实例化画笔
 mPaint.setAntiAlias(true);//设置抗锯齿
 mPaint.setColor(Color.parseColor("#c9b2ab"));//设置画笔的颜色,也就是三角形的颜色
 mPaint.setStyle(Paint.Style.FILL);//设置style
 mPaint.setPathEffect(new CornerPathEffect(3));//设置三角形圆角 

 }

重写onSizeChanged方法来设置指示器三角形的

/**
 * 当控件的宽高发生变化时都会回调这个方法
 * @param w 控件的长度
 * @param h 高度
 * @param oldw 以前的长度
 * @param oldh 以前的高度
 */
 @Override
 protected void onSizeChanged(int w, int h, int oldw, int oldh) {
 super.onSizeChanged(w, h, oldw, oldh); 

 /*
 控件的长度(3个tab的总长度)/3就得到每个tab的长度
 而三角形的宽度又是每个tab的长度的六分之一
 */
 mTriangleWidth = (int) (w / 3 * RADIO_TRIANGLE_WIDTH);
 /*
 三角形初始的偏移量,也就是三角形初始的位置
 w / 3 / 2:每个tab长度的一半就是tab的正中间
 再减去三角形宽度的一半,这个偏移量刚好三角形就显示在tab的正中间
 */
 mInitTranslationX = w / 3 / 2 - mTriangleWidth / 2;
 initTriangle(); 

 } 

 /**
 * 初始化三角形
 */
 private void initTriangle() {
 mTriangleHeight = mTriangleWidth / 2;//三角形的高度设置为宽度的一半
 //实例化三角形
 mPath = new Path();
 mPath.moveTo(0, 0);//三角形的起点
 mPath.lineTo(mTriangleWidth, 0);//首先绘制一条宽度为三角形宽度的一条直线
 //然后绘制三角形右边的那条线x坐标为宽度的一半,y坐标为宽度的一半
 mPath.lineTo(mTriangleWidth / 2, -mTriangleHeight);
 mPath.close();//完成闭合,绘制了一个完整的三角形
 }

重写dispatchDraw来绘制指示器:

/**
 * 绘制
 * @param canvas
 */
 @Override
 protected void dispatchDraw(Canvas canvas) {
 /*
 canvas.save();和canvas.restore();是两个相互匹配出现的,作用是用来保存画布的状态和取出保存的状态的。
 save:用来保存Canvas的状态。save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作
 */
 canvas.save();
 canvas.translate(mInitTranslationX + mTranslationX, getHeight()+2);//绘制之前先平移到指定的位置
 canvas.drawPath(mPath,mPaint);//平移到指定的位置后开始绘制,
 /*
 restore:用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响。
 */
 canvas.restore();
 super.dispatchDraw(canvas);
 }

重写scroll方法来设置滑动时指示器的偏移量:

/**
 * 指示器根据手指滚动而滚动
 * @param position
 */
 public void scroll(int position, float offset) {
 int tabWidth = getWidth() / 3;
 mTranslationX = (int)(tabWidth * offset + position * tabWidth);//三角形的偏移量
 invalidate();
 }

在布局文件中使用

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:duanlian="http://schemas.android.com/apk/res-auto"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"> 

 <com.duanlian.tabviewpagerindicator.view.ViewPagerIndicator
 android:id="@+id/id_indicator"
 android:layout_width="match_parent"
 android:layout_height="45dp"
 android:background="#000000"
 android:orientation="horizontal"
 duanlian:visible_tab_count="4"> 

 <TextView
 android:id="@+id/main_yiyan"
 android:layout_width="0dp"
 android:layout_height="match_parent"
 android:layout_weight="1"
 android:gravity="center"
 android:onClick="meiZi"
 android:text="江一燕"
 android:textColor="#ffffff"
 android:textSize="16sp" /> 

 <TextView
 android:id="@+id/main_liya"
 android:layout_width="0dp"
 android:layout_height="match_parent"
 android:layout_weight="1"
 android:gravity="center"
 android:onClick="meiZi"
 android:text="佟丽娅"
 android:textColor="#ffffff"
 android:textSize="16sp" /> 

 <TextView
 android:id="@+id/yuanyuan"
 android:layout_width="0dp"
 android:layout_height="match_parent"
 android:layout_weight="1"
 android:gravity="center"
 android:onClick="meiZi"
 android:text="高圆圆"
 android:textColor="#ffffff"
 android:textSize="16sp" />
 </com.duanlian.tabviewpagerindicator.view.ViewPagerIndicator> 

 <android.support.v4.view.ViewPager
 android:id="@+id/id_viewpager"
 android:layout_width="fill_parent"
 android:layout_height="0dp"
 android:layout_weight="1" />
</LinearLayout>

根据你需要的导航栏的标题数量来设置ViewPagerIndicator中间的TextView的数量

创建Fragment

根据你的需要创建Fragment的数量,我这里创建了3个Framgent,布局文件就一个TextView和一个ImageView。
我贴出其中一个Frament的代码,其他两个基本都是一样的:

package com.duanlian.tabviewpagerindicator.fragment; 

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; 

import com.duanlian.tabviewpagerindicator.R; 

public class FragmentA extends Fragment {
 @Override
 public void onCreate( Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 } 

 @Nullable
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
 View view = inflater.inflate(R.layout.a_fragment, null);
 return view;
 } 

 @Override
 public void onActivityCreated( Bundle savedInstanceState) {
 super.onActivityCreated(savedInstanceState);
 }
}

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"> 

 <ImageView
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="@mipmap/jiangyiyan"
 android:scaleType="fitXY" /> 

 <TextView
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_gravity="bottom"
 android:gravity="center_horizontal"
 android:text="FregmentA"
 android:textColor="#e44316"
 android:textSize="36dp" />
</FrameLayout>

Activity中的逻辑

滑动VIewPager让导航栏的标题改变得实现:

//定义两个颜色和大小
 private int colorA = Color.parseColor("#ff00ff");//选中的颜色
 private int colorB = Color.WHITE;//默认的颜色
 private float sizeA = 19f;//选中大小
 private float sizeB = 16f;//默认大小
/**
 * 设置监听的方法
 */
 private void setListener() {
 //ViewPager的监听事件
 mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
 @Override
 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
 //让indicator和ViewPager联动
 mIndicator.scroll(position, positionOffset);
 } 

 @Override
 public void onPageSelected(int position) {
 switch (position) {
  case 0:
  setTextAttribute(colorA,colorB,colorB,sizeA,sizeB,sizeB);
  break;
  case 1:
  setTextAttribute(colorB,colorA,colorB,sizeB,sizeA,sizeB);
  break;
  case 2:
  setTextAttribute(colorB,colorB,colorA,sizeB,sizeB,sizeA);
  break;
 }
 }
 @Override
 public void onPageScrollStateChanged(int state) {
 }
 }); 

 }
 /**
 * 自己定义一个给textView设置属性的方法
 */
 private void setTextAttribute(int color1, int color2, int color3, float size1, float size2, float size3){
 yiYan.setTextColor(color1);
 liYa.setTextColor(color2);
 yuanYuan.setTextColor(color3);
 yiYan.setTextSize(size1);
 liYa.setTextSize(size2);
 yuanYuan.setTextSize(size3); 

 }

点击导航栏的标题让ViewPager联动的实现:

/**
 * 导航栏点击事件
 * @param view
 */
 public void meiZi(View view){
 switch (view.getId()) {
 case R.id.main_yiyan:
 mViewPager.setCurrentItem(0);
 break;
 case R.id.main_liya:
 mViewPager.setCurrentItem(1);
 break;
 case R.id.yuanyuan:
 mViewPager.setCurrentItem(2);
 break;
 } 

 }

整个Activity的代码如下:

package com.duanlian.tabviewpagerindicator; 

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.Window;
import android.widget.TextView; 

import com.duanlian.tabviewpagerindicator.adapter.MyFragmentPagerAdapter;
import com.duanlian.tabviewpagerindicator.fragment.FragmentA;
import com.duanlian.tabviewpagerindicator.fragment.FragmentB;
import com.duanlian.tabviewpagerindicator.fragment.FragmentC;
import com.duanlian.tabviewpagerindicator.view.ViewPagerIndicator; 

import java.util.ArrayList;
import java.util.List; 

public class MainActivity extends FragmentActivity {
 private ViewPager mViewPager;
 private ViewPagerIndicator mIndicator;//导航栏指示器
 private List<Fragment> mContents;//装载fragment的集合
 private MyFragmentPagerAdapter mAdapter;
 private TextView yiYan;
 private TextView liYa;
 private TextView yuanYuan;
 //定义两个颜色和大小
 private int colorA = Color.parseColor("#ff00ff");//选中的颜色
 private int colorB = Color.WHITE;//默认的颜色
 private float sizeA = 19f;//选中大小
 private float sizeB = 16f;//默认大小 

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 requestWindowFeature(Window.FEATURE_NO_TITLE);
 setContentView(R.layout.activity_main);
 initViews();
 setListener();
 } 

 /**
 * 初始化view
 */
 private void initViews() {
 mIndicator = (ViewPagerIndicator) findViewById(R.id.id_indicator);
 mViewPager = (ViewPager) findViewById(R.id.id_viewpager);
 //3个标题
 yiYan = (TextView) findViewById(R.id.main_yiyan);
 liYa = (TextView) findViewById(R.id.main_liya);
 yuanYuan = (TextView) findViewById(R.id.yuanyuan);
 FragmentA fragmentA = new FragmentA();
 FragmentB fragmentB = new FragmentB();
 FragmentC fragmentC = new FragmentC();
 mContents = new ArrayList<>();
 mContents.add(fragmentA);
 mContents.add(fragmentB);
 mContents.add(fragmentC);
 mAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), mContents);
 mViewPager.setAdapter(mAdapter);
 //设置默认页面和颜色
 mViewPager.setCurrentItem(0);
 setTextAttribute(colorA,colorB,colorB,sizeA,sizeB,sizeB);
 }
 /**
 * 导航栏点击事件
 * @param view
 */
 public void meiZi(View view){
 switch (view.getId()) {
 case R.id.main_yiyan:
 mViewPager.setCurrentItem(0);
 break;
 case R.id.main_liya:
 mViewPager.setCurrentItem(1);
 break;
 case R.id.yuanyuan:
 mViewPager.setCurrentItem(2);
 break;
 } 

 } 

 /**
 * 设置监听的方法
 */
 private void setListener() {
 //ViewPager的监听事件
 mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
 @Override
 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
 //让indicator和ViewPager联动
 mIndicator.scroll(position, positionOffset);
 } 

 @Override
 public void onPageSelected(int position) {
 switch (position) {
  case 0:
  setTextAttribute(colorA,colorB,colorB,sizeA,sizeB,sizeB);
  break;
  case 1:
  setTextAttribute(colorB,colorA,colorB,sizeB,sizeA,sizeB);
  break;
  case 2:
  setTextAttribute(colorB,colorB,colorA,sizeB,sizeB,sizeA);
  break;
 }
 }
 @Override
 public void onPageScrollStateChanged(int state) {
 }
 }); 

 }
 /**
 * 自己定义一个给textView设置属性的方法
 */
 private void setTextAttribute(int color1, int color2, int color3, float size1, float size2, float size3){
 yiYan.setTextColor(color1);
 liYa.setTextColor(color2);
 yuanYuan.setTextColor(color3);
 yiYan.setTextSize(size1);
 liYa.setTextSize(size2);
 yuanYuan.setTextSize(size3); 

 }
}

Adapter的编写

package com.duanlian.tabviewpagerindicator.adapter; 

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter; 

import java.util.List; 

public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
 private List<Fragment> list;
 public MyFragmentPagerAdapter(FragmentManager fm,List<Fragment> mContents) {
 super(fm);
 this.list = mContents;
 } 

 @Override
 public Fragment getItem(int position) {
 return list.get(position);
 } 

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

完成了,欢迎大神指正,虚心受教
demo下载地址:炫酷导航栏指示器

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android ViewPager导航小圆点实现无限循环效果

    之前用View Pager做了一个图片切换的推荐栏(就类似与淘宝.头条客户端顶端的推荐信息栏),利用View Pager很快就能实现,但是一次无意间使用淘宝APP的时候,突然发现它的效果和我做的还不一样,淘宝APP的推荐栏可以左右无限循环切换,而ViewPager自身其实并没有支持这个功能. 其实实现这个无限循环不难,只需要在数据源的首尾各添加一张多余的图片,在onPagerChangeListener()中监听position<1和position>(总数据条目-1)就可以了.另外一点需要注

  • Android ViewPager制作新手导航页(动态加载)

    我们来讲个老生常谈的话题,估计大家都用过的->ViewPager,用它来做新手导航页面,虽然这次也是讲这个,但是和以往的用法可能有些不同,大家都看到标题进来的,应该知道的是:动态加载指示器. 什么叫动态加载呢,是不是感觉很高大上呢,其实呢就是动态的去加载指示器的数量的,而不是在布局文件中写死.希望看了这篇文章大家对ViewPager有新的认识. 看到这个效果大家应该都很不屑吧,今天讲这个就是为了让大家有新的认识.好了,好好听,开始了. 这个动态加载就是为了动态的加载下面的灰色圆点指示器和红色圆点

  • Android动态给ViewPager添加Indicator导航

    先看下效果 小圆点的形状和颜色都是可以自己定义的,看需求 首先第一步,滑2个圆点,一个是选中后的圆点,一个是未选中的圆点,看选中的圆点shape <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > &l

  • Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果

    BottomBar BottomBar是Github上的一个开源框架,因为从1.3.3开始不支持fragments了,要自己配置,弄了很久,不管是app的fragment还是V4 的程序总是总是闪退.于是就用这种方式实现了,效果还不错.github有详细说明,多余的就不说了. 这个roughike是这个项目的所有者(大神致敬). 我用的是Android studio开发,fragment全部导的V4的包(以为最开始就支持的是v4的,后面也支持了app.fragment). 首先是dependen

  • ViewPager顶部导航栏联动效果(标题栏条目多)

    如果标题栏过多,超过屏幕的宽度,该怎么弄,下面我们就来解决一下,效果如下: 其实和之前写的也差不多,我就是在哪个demo里面添加和修改了一下,就加了几个title标题,加了几个图片,最重要的是给TableLayout添加了一个属性: app:tabMode="scrollable" 这个属性就是设置设置TableLayout可以滚动,看我滚动上面的标题栏: 这里我还给标题栏设置了几个附加的属性,让它显得更好看: <span style="white-space:pre&

  • Android使用ViewPager实现导航

    首先先了解ViewPager实现的出效果是能够使视图左右滑动. ViewPager在XML文件中的声明和其他一些控件的声明有点儿不一样 而android.support.v4.view是Android界面特殊效果的第三方加载的jar包,能够向下兼容. <android.support.v4.view.ViewPager ... ... > </android.support.v4.view.ViewPager> 加载显示的页卡:需要将layout布局文件转型为View对象 (1)

  • Android 利用ViewPager+GridView实现首页导航栏布局分页效果

    最近我尝试使用ViewPager+GridView实现的,看起来一切正常,废话不多说,具体代码如下: 如图是效果图 首先分析下思路 1.首先是怎么布局:整体是一个ViewPager将GridView作为一个View添加到ViewPager的adapter中,下方是圆点 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.a

  • Android中TabLayout+ViewPager 简单实现app底部Tab导航栏

    前言 在谷歌发布Android Design Support Library之前,app底部tab布局的实现方法就有很多种,其中有RadioGroup+FrameLayout.TabHost+Fragment.FragmentPagerAdapter+ViewPager等方法,虽然这些方法虽然能达到同样的效果,但我个人总觉得有些繁琐.然而,Google在2015的IO大会上,给开发者们带来了全新的Android Design Support Library,里面包含了许多新控件,这些新控件有许多

  • Android 中 TabHost与ViewPager结合实现首页导航效果

    今天发的是TabHost结合ViewPager实现首页底部导航的效果,虽然说网上有很多这样的Demo,不过呢,我还是要把自己练习写的发出来,没错!就是这么任性: 先上效果图,如下: 代码里面有注释,就不过多解释了,说几点需要注意的问题 1:TabHost .TabWidget.FrameLayout一定添加id这个属性,否则会报错 android:id="@android:id/tabhost" android:id="@android:id/tabcontent"

  • Android自定义ViewPagerIndicator实现炫酷导航栏指示器(ViewPager+Fragment)

    ViewPagerIndicator导航栏指示器运行效果: 实现这个效果,我是看了很多大神写的博客和视频后自己敲的,欢迎指正 github地址:https://github.com/dl10210950/TabViewPagerIndicator 自定义一个ViewPagerIndicator 自定义一个Indicator继承LinearLayout,在构造方法里面设置画笔的一些属性 public ViewPagerIndicator(Context context, AttributeSet

  • Android自定义PopupWindow实现炫酷的IOS对话框效果

    前言: 最近在使用IOS系统的过程中发现IOS底部弹出框甚是漂亮,大气,上档次,于是乎就想啊能不能在Android中实现类似的对话框呢?你说,这不是废话吗,除了一些极少数的系统级的不能模仿外(版权)还有啥不能依瓢画葫芦的呢,所以啊,这篇文章将介绍如何在Android中实现高仿IOS对话框效果,先上图,给大家养养眼: 大家在看到上面的对话框时有没有想到简单的实现思路呢?我这里给出的思路是我们可以自定义一个PopupWindow,然后设置我们的布局.这里的布局很有技巧哦,那就是对话框中间的透明隔断区

  • Android自定义渐变式炫酷ListView下拉刷新动画

    本文实例为大家分享了自定义渐变式炫酷动画的ListView下拉刷新,供大家参考,具体内容如下 主要要点 listview刷新过程中主要有三个步骤当前:状态为下拉刷新,当前状态为下拉刷新,当前状态为放开刷新,当前状态为正在刷新:主要思路为三个步骤分别对应三个自定义的view:即ibuRefreshFirstStepView,ibuRefreshSecondStepView,ibuRefreshThirdStepView. 效果图 ibuRefreshFirstStepView代码,例如: priv

  • Android自定义View实现炫酷进度条

    本文实例为大家分享了Android实现炫酷进度条的具体代码,供大家参考,具体内容如下 下面我们来实现如下效果: 第一步:创建attrs文件夹,自定义属性: <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyProgress"> <attr name="out_color" form

  • Android 沉浸式状态栏与隐藏导航栏实例详解

    1 前言 一般我们在Android的APP开发中,APP的界面如下: 可以看到,有状态栏.ActionBar(ToolBar).导航栏等,一般来说,APP实现沉浸式有三种需求:沉浸式状态栏,隐藏导航栏,APP全屏 沉浸式状态栏是指状态栏与ActionBar颜色相匹配, 隐藏导航栏不用多说,就是将导航栏隐藏,去掉下面的黑条. APP全屏是指将状态栏与导航栏都隐藏,例如很多游戏界面,都是APP全屏. 所以,在做这一步时,关键要问清楚产品狗的需求,免得白费功夫. 下面,分别来介绍这三种方式的实现. 2

  • android 全屏去掉底部虚拟导航栏的方法

    如下所示: @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATIO

  • Android选中突出背景效果的底部导航栏功能

    今天在群里看到一个底部导航选中突出效果像这样 就想着 这个应该怎么做呢,我记得类似咸鱼那种的是中间突出,不像这种 是选中哪个,哪个就突出 第一种方法 简单快捷,让UI帮忙切几张带突出背景的图片, 选中切换图片简单粗暴 在群里找小伙伴要了UI的切图一看给的6张图片一样大小,也不带突出背景 于是想着有没有第二种方法实现 百度了许久也许是我找的方法不对,也许是大家都没遇到这样的UI. 怎么办,自己想想,静下心来看UI效果,发现突出的地方有点像贝塞尔曲线 再细细分析一下,如果突出的是贝塞尔曲线那么如何画

  • 一步步教大家编写酷炫的导航栏js+css实现

    一步一步的学习制作导航栏,文章末尾再做个综合页面,分享给大家一个炫酷的导航栏供大家参考,具体内容如下 1.当前页面高亮显示的导航栏 首先是HTML代码,很简单,ul+li实现菜单 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>导航栏一</title> </head> <body>

  • Android实现淘宝底部图标导航栏

    在上一篇中,简单的使用透明主题的Activity实现了仿微信右侧顶部的对话框,上午又花了两个小时研究了一下淘宝底部的导航栏实现,网上的做法也有很多,今天我就使用一种通过基本控件加上布局的方式,没有任何的自定义风格,控件等来实现,还是老样子,先看一下效果图: 下面就来具体看一看如何实现的,还是按照步骤来吧: 绘制主界面 activity_layout.xml代码如下: <?xml version="1.0" encoding="utf-8"?> <R

  • 小程序自定义单页面、全局导航栏的实现代码

    需求 产品说小程序返回到首页不太方便,想添加返回首页按钮,UI说导航栏能不能设置背景图片,因为那样设计挺好看的. 需求分析并制定方案 这产品和UI都提需求了,咱也不能反驳哈,所以开始调研,分析可行性方案:1.可以添加悬浮按钮.2.自定义导航栏. 添加悬浮按钮,是看起来是比较简单哈,但是感觉不太优雅,会占据页面的空间,体验也不太好.所以想了下第二种方案,自定义导航栏既可以实现产品的需求还可以满足UI的设计美感,在顶部空白处加上返回首页的按钮,这样和返回按钮还对称(最终如图所示,顶部导航栏是个背景图

随机推荐