- CompoundButton 源码分析
- LinearLayout 源码分析
- SearchView 源码解析
- LruCache 源码解析
- ViewDragHelper 源码解析
- BottomSheets 源码解析
- Media Player 源码分析
- NavigationView 源码解析
- Service 源码解析
- Binder 源码分析
- Android 应用 Preference 相关及源码浅析 SharePreferences 篇
- ScrollView 源码解析
- Handler 源码解析
- NestedScrollView 源码解析
- SQLiteOpenHelper/SQLiteDatabase/Cursor 源码解析
- Bundle 源码解析
- LocalBroadcastManager 源码解析
- Toast 源码解析
- TextInputLayout
- LayoutInflater 和 LayoutInflaterCompat 源码解析
- TextView 源码解析
- NestedScrolling 事件机制源码解析
- ViewGroup 源码解析
- StaticLayout 源码分析
- AtomicFile 源码解析
- AtomicFile 源码解析
- Spannable 源码分析
- Notification 之 Android 5.0 实现原理
- CoordinatorLayout 源码分析
- Scroller 源码解析
- SwipeRefreshLayout 源码分析
- FloatingActionButton 源码解析
- AsyncTask 源码分析
- TabLayout 源码解析
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
2. 总体设计
TabLayout
继承HorizontalScrollView
天生就是一个可以横向滚动的ViewGroup
. 我们知道,HorizontalScrollView
与ScrollView
一样,最多只能包含一个子 View.SlidingTabStrip
继承于LinearLayout
,是TabLayout
的内部类。它是TabLayout
唯一的子 View. 所有的TabView
都是它的子 View.TabView
继承于LinearLayout
,以Tab
为数据源,来展示 Tab 的样式。最终用 for 循环被 add 进SlidingTabStrip
.Tab
是一个简单的 View Model 实体类,控制TabView
的 title, icon, custom layout id 等属性。TabItem
继承于 View. 用于在 layout xml 中来描述 Tab. 需要注意的是,它不会 add 到SlidingTabStrip
中去。它的作用是从 xml 中获取到 text,icon,custom layout id 等属性。TabLayout inflate 到TabItem
并获取属性到装配到Tab
中,最终 add 到SlidingTabStrip
中的还是TabView
.OnTabSelectedListener
是 TabLayout 中的内部接口,用于监听SlidingTabStrip
中子TabView
选中状态的改变。Mode
是 TabLayout 滚动模式的描述,一共有两种状态。MODE_FIXED
不可滚动模式,以及MODE_SCROLLABLE
可以滚动模式。Gravity
是TabView
在SlidingTabStrip
中 layout 方式的描述。分为:GRAVITY_FILL,GRAVITY_CENTER.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论