zoukankan      html  css  js  c++  java
  • TabLayout+ViewPager实现标签卡效果

    转载请注明原文地址:http://www.cnblogs.com/yanyojun/p/8082391.html

    代码已经上传至Github:https://github.com/YanYoJun/ViewPagerDemo


    先看效果

    1、布局文件

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     xmlns:app="http://schemas.android.com/apk/res-auto"
     4     xmlns:tools="http://schemas.android.com/tools"
     5     android:layout_width="match_parent"
     6     android:layout_height="match_parent"
     7     android:orientation="vertical"
     8     tools:context="com.plbear.yyj.myapplication.MainActivity">
     9 
    10     <android.support.design.widget.TabLayout
    11         android:id="@+id/tab"
    12         android:layout_width="match_parent"
    13         android:layout_height="40dp"
    14         app:tabGravity="fill"
    15         app:tabIndicatorColor="#4978ef"
    16         app:tabIndicatorHeight="2dp"
    17         app:tabMode="scrollable"
    18         app:tabSelectedTextColor="#4978ef"
    19         app:tabTextColor="#222222"></android.support.design.widget.TabLayout>
    20 
    21     <android.support.v4.view.ViewPager
    22         android:id="@+id/view_pager"
    23         android:layout_width="match_parent"
    24         android:layout_height="wrap_content"></android.support.v4.view.ViewPager>
    25 
    26 </LinearLayout>

    2、代码实现

     1 package com.plbear.yyj.myapplication
     2 
     3 import android.os.Bundle
     4 import android.support.design.widget.Snackbar
     5 import android.support.design.widget.TabLayout
     6 import android.support.v4.app.Fragment
     7 import android.support.v4.app.FragmentPagerAdapter
     8 import android.support.v7.app.AppCompatActivity
     9 import android.view.Menu
    10 import android.view.MenuItem
    11 
    12 import kotlinx.android.synthetic.main.activity_main.*
    13 
    14 class MainActivity : AppCompatActivity() {
    15 
    16     var mFragList = ArrayList<Fragment>()
    17     var adapter = object:FragmentPagerAdapter(supportFragmentManager){
    18         override fun getItem(position: Int): Fragment {
    19             return mFragList[position]
    20         }
    21 
    22         override fun getCount(): Int {
    23             return 2
    24         }
    25     }
    26 
    27     override fun onCreate(savedInstanceState: Bundle?) {
    28         super.onCreate(savedInstanceState)
    29         setContentView(R.layout.activity_main)
    30         initViewPager() //先将各个fragment加入到viewpager中
    31         initTabLayout(); //初始化tablayout
    32     }
    33 
    34 
    35     fun initTabLayout(){
    36         tab.setupWithViewPager(view_pager)
    37         tab.setTabsFromPagerAdapter(adapter)
    38         tab.tabMode = TabLayout.MODE_FIXED
    39         tab.getTabAt(0)?.setText("第一页")
    40         tab.getTabAt(1)?.setText("第二页")
    41     }
    42 
    43     fun initViewPager(){
    44         mFragList.add(Fragment1())
    45         mFragList.add(Fragment2())
    46 
    47         view_pager.adapter = adapter
    48     }
    49 
    50 }

    这里需要注意点,需要先将setupWithViewPager和tablayout绑定起来,然后再初始化tab的标签页,这个非常重要,否则会造成tablayout中的文字显示不出来。

    这里注意,要保证support包和design包的版本号一致,不然app会出现闪退

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
        compile 'com.android.support:design:26.0.0-beta1'
        compile 'com.android.support:support-v4:26.0.0-beta1'
        implementation 'com.android.support:appcompat-v7:26.0.0-beta1'
        implementation 'com.android.support.constraint:constraint-layout:1.0.2'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:0.5'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2'
    }
  • 相关阅读:
    笔记:C/C++字符函数的使用
    学习游戏基础编程3:地图编辑器
    学习游戏基础编程2:Win32分割窗口
    学习游戏基础编程1:Win32自定义控件
    [WebServer] Tomcat 配置访问限制:访问白名单和访问黑名单
    [WebServer] Windows操作系统下 Tomcat 服务器运行 PHP 的环境配置
    XSLT函数集合:数值函数、字符串函、节点集函数和布尔函数
    腾讯的一道JavaScript面试题
    【转】AES 进一步的研究
    MQTT-Client-FrameWork使用整理
  • 原文地址:https://www.cnblogs.com/yanyojun/p/8082391.html
Copyright © 2011-2022 走看看