示例代码中的 SlidingTabLayout 简单使用(一)
来源:互联网 发布:淘宝家用电器压面机 编辑:程序博客网 时间:2024/05/14 11:57
在程序中为侧向屏幕导航提供可选的选项卡。Google 已经淘汰了以前的许多选项卡,如 TabWiget,ActionBar,但是SlidingTabLayout 符合当前选项卡的设计模式。
SlidingTabLayout 旨在与 ViewPager 密切协作,因为选项卡设计模式的一部分是允许在每个视图之间轻扫。轻扫 ViewPager 时,当前选项卡自动滚动以同时显示出来。
效果如下 (AndroidStudio 1.5):
复制 android-sdk-windows\samples\android-23_1\ui\SlidingTabsBasic\Application\src\main\java\com\example\android\common\view 目录(Android 的示例目录)下的 SlidingTabLayout.java 和 SlidingTabStrip.java 两个类到自己项目的 java 包目录下。
content_main.xml :
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.crazy.tabs.MainActivity" tools:showIn="@layout/activity_main"> <com.crazy.tabs.SlidingTabLayout android:id="@+id/tabs" android:background="#0ff" android:layout_width="match_parent" android:layout_height="wrap_content" /> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager></LinearLayout>
MainActivity.java :
package com.crazy.tabs;import android.content.Context;import android.graphics.Color;import android.os.Bundle;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.View;import android.view.Menu;import android.view.MenuItem;import android.view.ViewGroup;import android.widget.ImageView;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); ViewPager viewPager = (ViewPager)findViewById(R.id.pager); SlidingTabLayout tabLayout = (SlidingTabLayout)findViewById(R.id.tabs); viewPager.setAdapter(new TabsPagerAdapter(this)); /** * SlidingTabLayout 与 ViewPager 关联,继承选项卡标题和滚动跟踪行为 */ tabLayout.setViewPager(viewPager); tabLayout.setCustomTabColorizer(new SlidingTabLayout.TabColorizer(){ @Override public int getIndicatorColor(int position) { // 显示在每个选项卡位置下方的颜色 return Color.MAGENTA; } @Override public int getDividerColor(int position) { // 透明以隐藏分隔线 return 0; } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } private static class TabsPagerAdapter extends PagerAdapter{ private Context mContext; private static final int[] IMAGES = { R.drawable.bg_01, R.drawable.bg_02, R.drawable.bg_03, R.drawable.bg_04, R.drawable.bg_05, R.drawable.bg_06, R.drawable.bg_07 }; public TabsPagerAdapter(Context context){ mContext = context; } /** * SlidingTabLayout 要求此方法定义每个选项卡将显示的文本 */ @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return "Monday"; case 1: return "Tuesday"; case 2: return "Wednesday"; case 3: return "Thursday"; case 4: return "Friday"; case 5: return "Saturday"; case 6: return "Sunday"; default: return ""; } } @Override public int getCount() { return 7; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView pageView = new ImageView(mContext); pageView.setScaleType(ImageView.ScaleType.CENTER); pageView.setImageResource(IMAGES[position]); container.addView(pageView); return pageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View)object); } @Override public boolean isViewFromObject(View view, Object object) { return (view == object); } }}
0 0
- 示例代码中的 SlidingTabLayout 简单使用(一)
- 示例代码中的 SlidingTabLayout 简单使用(二)
- Nuva 示例代码(每日一帖)之 简单浏览器
- SlidingTabLayout
- py2exe使用教程(一)——简单的示例
- 【Android UI】SlidingTabLayout使用小结
- Junit4 简单使用及示例代码
- CXF简单示例(一)
- Android中的AlertDialog使用示例一(警告对话框)
- ios数据库sqlite3简单使用示例一
- 深入浅出学习Struts1框架(一):一个简单mvc模式代码示例开始
- 深入浅出学习Struts框架(一):一个简单mvc模式代码示例开始
- 深入浅出学习Struts1框架(一):一个简单mvc模式代码示例开始
- 深入浅出学习Struts1框架(一):一个简单mvc模式代码示例开始
- 深入浅出学习Struts1框架(一):一个简单mvc模式代码示例开始
- _CrtDumpMemoryLeaks报告程序中的内存泄露问题(简单示例代码)
- CrtDumpMemoryLeaks报告程序中的内存泄露问题(简单示例代码)
- AES在openssl和mbedtls中的简单代码示例
- mysql-proxy实现mysql主从库读写分离
- A、B两个整数集合,设计一个算法求他们的交集,尽可能的高效。
- Caffe学习——Imagenet分类
- 关于H5播放视频文件的问题
- 第十六周项目一----直接选择排序
- 示例代码中的 SlidingTabLayout 简单使用(一)
- 图的建立
- 数据结构——图
- 第十五周--数据结构(项目三)--B-树的基本操作
- 30分钟LINQ教程
- App市场的“繁荣”背后 隐藏令人唏嘘的真相
- iOS项目集成百度地图方法以及问题解决
- 西普实验吧部分逆向题writeup(一)
- 总结_判断指定地址内存空间合法