viewpager按钮下加下划线

ViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view。我们首先来看看API对于这个类的表述:

?


1

2

3

Layout manager that allows the user to flip left and right through pages of data. You supply an implementation of a PagerAdapter to generate the pages that the view shows.

Note this class is currently under early design and development. The API will likely change in later updates of the compatibility library, requiring changes to the source code of apps when they are compiled against the newer version.

ViewPager is most often used in conjunction with Fragment, which is a convenient way to supply and manage the lifecycle of each page. There are standard adapters implemented for using fragments with the ViewPager, which cover the most common use cases. These are FragmentPagerAdapter andFragmentStatePagerAdapter; each of these classes have simple code showing how to build a full user interface with them.

从这个描述中我们知道几点:

1)ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的view类。

2)ViewPager类需要一个PagerAdapter适配器类给它提供数据。

3)ViewPager经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类供Fragment中的ViewPager使用。

在编写ViewPager的应用的使用,还需要使用两个组件类分别是PagerTitleStrip类和PagerTabStrip类,PagerTitleStrip类直接继承自ViewGroup类,而PagerTabStrip类继承PagerTitleStrip类,所以这两个类也是容器类。但是有一点需要注意,在定义XML的layout的时候,这两个类必须是ViewPager标签的子标签,不然会出错。

layout.xml:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".MainActivity" >

    <android.support.v4.view.ViewPager

        android:id="@+id/viewpager"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content" >

        <android.support.v4.view.PagerTabStrip

            android:id="@+id/tabstrip"

            android:layout_width="wrap_content"

            android:layout_height="50dip"

            android:gravity="center" />

    </android.support.v4.view.ViewPager>

</RelativeLayout>

MainActivity.java

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

package com.example.android_viewpager1;

import java.util.ArrayList;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.os.Bundle;

import android.support.v4.view.PagerAdapter;

import android.support.v4.view.PagerTabStrip;

import android.support.v4.view.ViewPager;

import android.support.v4.view.ViewPager.OnPageChangeListener;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

public class MainActivity extends Activity {

    ViewPager pager = null;

    PagerTabStrip tabStrip = null;

    ArrayList<View> viewContainter = new ArrayList<View>();

    ArrayList<String> titleContainer = new ArrayList<String>();

    public String TAG = "tag";

    @SuppressLint("ResourceAsColor")

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        pager = (ViewPager) this.findViewById(R.id.viewpager);

        tabStrip = (PagerTabStrip) this.findViewById(R.id.tabstrip);

        //取消tab下面的长横线

        tabStrip.setDrawFullUnderline(false);

        //设置tab的背景色

        tabStrip.setBackgroundColor(this.getResources().getColor(R.color.bg));

        //设置当前tab页签的下划线颜色

        tabStrip.setTabIndicatorColor(this.getResources().getColor(R.color.red));

        tabStrip.setTextSpacing(200);

        

        View view1 = LayoutInflater.from(this).inflate(R.layout.tab1, null);

        View view2 = LayoutInflater.from(this).inflate(R.layout.tab2, null);

        View view3 = LayoutInflater.from(this).inflate(R.layout.tab3, null);

        View view4 = LayoutInflater.from(this).inflate(R.layout.tab4, null);

      //viewpager开始添加view

        viewContainter.add(view1);

        viewContainter.add(view2);

        viewContainter.add(view3);

        viewContainter.add(view4);

      //页签项

        titleContainer.add("网易新闻");

        titleContainer.add("网易体育");

        titleContainer.add("网易财经");

        titleContainer.add("网易女人");

        pager.setAdapter(new PagerAdapter() {

            //viewpager中的组件数量

            @Override

            public int getCount() {

                return viewContainter.size();

            }

          //滑动切换的时候销毁当前的组件

            @Override

            public void destroyItem(ViewGroup container, int position,

                    Object object) {

                ((ViewPager) container).removeView(viewContainter.get(position));

            }

          //每次滑动的时候生成的组件

            @Override

            public Object instantiateItem(ViewGroup container, int position) {

                ((ViewPager) container).addView(viewContainter.get(position));

                return viewContainter.get(position);

            }

            @Override

            public boolean isViewFromObject(View arg0, Object arg1) {

                return arg0 == arg1;

            }

            @Override

            public int getItemPosition(Object object) {

                return super.getItemPosition(object);

            }

            @Override

            public CharSequence getPageTitle(int position) {

                return titleContainer.get(position);

            }

        });

        pager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override

            public void onPageScrollStateChanged(int arg0) {

                Log.d(TAG, "--------changed:" + arg0);

            }

            @Override

            public void onPageScrolled(int arg0, float arg1, int arg2) {

                Log.d(TAG, "-------scrolled arg0:" + arg0);

                Log.d(TAG, "-------scrolled arg1:" + arg1);

                Log.d(TAG, "-------scrolled arg2:" + arg2);

            }

            @Override

            public void onPageSelected(int arg0) {

                Log.d(TAG, "------selected:" + arg0);

            }

        });

    }

}

实现的效果如下:

对于PagerAdapter类,android的文档已经说的很清楚了,必须至少实现如下的4个方法,如果需要更好的扩展也可以实现更多的方法。

public Object instantiateItem(ViewGroup container, int position)

public void destroyItem(ViewGroup container, int position,Object object)

public int getCount()

public boolean isViewFromObject(View arg0, Object arg1)

时间: 02-22

viewpager按钮下加下划线的相关文章

iOS初学,关于变量加下划线问题

为什么做ios开发,变量前要加下划线才有用? 看到这个哥们的解释后,终于明白了,转帖到此. 链接在此:http://www.cocoachina.com/bbs/read.php?tid=234290 在.m实现文件中,如果使用property,必须使用 self.property 的方式调用 getter 方法.顺便说一句,其实self.property其实就是调用了getter方法. oc语法关于点表达式的说明:"点表达式(.)看起来与C语言中的结构体访问以及java语言汇总的对象访问有点类

android如果给TextView或EditText的email链接加下划线,并在点击在email连接上可以弹框显示

如何把textview的一些文字加上背景色: Spannable str = new SpannableString("#fdsfdfsdfdsfd#"); Matcher matcher = getEmailPattern().matcher((CharSequence) str); while (matcher.find()) { int start = matcher.start(); int end = matcher.end(); str.setSpan(new Foregr

ASP.NET 导出Excel时,某单元格内一部分文字加粗加下划线

一.简述 在项目中的某个导出Excel的功能就需要在某个单元格中使一部分文字加粗和加下划线. 二.内容 在这个导出Excel的功能里用到了 Microsoft.Office.Interop.Excel 这个类库. 然后操作单元格: Microsoft.Office.Interop.Excel.Range cells = (Microsoft.Office.Interop.Excel.Range)xlsWorkSheet.Cells; cells["1", "A"]

给UILabel 或者 UIButton标题加下划线

方法一: [objc] view plaincopyprint? NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"查看所有中奖记录"]; NSRange strRange = {0,[str length]}; [str addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInte

bootstrap-导航加下拉菜单(二级导航)

1.运行效果如图所示 2.实现代码如下 <!DOCTYPE html> <html> <head>     <meta charset="utf-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <title>导航加下拉菜单(二级导航)</title>     <!-- 最新版

菜鸟的Xamarin.Forms前行之路——按钮的按下抬起事件的监控(可扩展至其他事件)

提问:监控按钮的点击事件,可以通过按钮的Click事件,或者Command绑定,那么如何监控按钮的按下与抬起,或者移动,长按,双击等事件? 解决方法:各个平台自定义渲染依赖注入. 共享项目PCL: 1先定义一个继承Button的实体类NewButton.cs public class NewButton : Button { public event EventHandler Pressed; public event EventHandler Released; public virtual

Bootstrap系列 -- 35. 按钮的向下向上三角形

按钮的向下三角形,我们是通过在<button>标签中添加一个“<span>”标签元素,并且命名为“caret”. <div class="btn-group dropup"> <button class="btn btn-default dropdown-toggle" data-toggle="dropdown" type="button">按钮下拉菜单<span cla

Bootstrap入门(十)组件4:按钮组与下拉菜单结合

先引入本地的CSS文件和JS文件(注:1.bootstrap是需要jQuery支持的.2.需要在<body>当中添加) <link href="css/bootstrap.min.css" rel="stylesheet"> <script src="jquery-3.1.0.min.js" type="text/javascript"></script> <script

ios禁用多按钮同时点下的bug

如果界面上有多个按钮的话,当你同时点击这几个按钮,会同时出发多个方法,再如果你的action进行了界面跳转,则会出现一个bug,你不信的话,可以试试... 之前有想过解决方法,第一种就是设置一个全局变量,当点击的时候将bool值设置为yes,在方法的最后再设置回来,这样的话是一件非常麻烦的事情:后来发现苹果对此已经有相关的解决方案:[btn setExclusiveTouch:YES]; ios禁用多按钮同时点下的bug,布布扣,bubuko.com

php命令行模式下加载的php.ini文件可能和web模式下加载的php.ini不一致

命令行下查看加载的php.ini的路径: php -i|grep php.ini web模式下查看: <?php phpinfo(); ?> 两种模式下加载的php.ini可能不一样,要注意这个问题. 指定命令行下加载的ini路径: php -c /usr/local/php/etc/php.ini  test.php