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'
}