Android kotlin实现底部导航栏

1、实现效果,可点击或者滑动切换fragment

点击                                                                                         滑动

                   

 

 实现方法:

1、创建三个fragment.kt

2、创建fragmentAdapter

class MyFragmentAdapter(fragmentManager: FragmentManager, private val fragmentList: List<Fragment>, private val titleList: List<String>, private val context: Context) : FragmentPagerAdapter(fragmentManager) {override fun getItem(position: Int): Fragment {return fragmentList[position]}override fun getCount(): Int {return titleList.size}//注意!!!这里就是我们自定义的布局tab_itemfun getCustomView(position: Int): View {val view = LayoutInflater.from(context).inflate(R.layout.tab_item, null)val iv = view.findViewById(R.id.tab_iv) as ImageViewval tv = view.findViewById(R.id.tab_tv) as TextViewwhen (position) {0 -> {//drawable代码在文章最后贴出iv.setImageDrawable(context.resources.getDrawable(R.drawable.home_icon_selector))tv.text = "首页"}1 -> {iv.setImageDrawable(context.resources.getDrawable(R.drawable.txl_icon_selector))tv.text = "通讯录"}2 -> {iv.setImageDrawable(context.resources.getDrawable(R.drawable.wd_icon_selector))tv.text = "我的"}}return view}
}

3、ViewPager加载fragment

 

private lateinit var fragment3:BlankFragment3
private lateinit var fragment2:BlankFragment2
private lateinit var fragment:BlankFragment
private fun getdata() {fragment  = BlankFragment()fragment2 = BlankFragment2()fragment3 = BlankFragment3()fragmentList!!.add(fragment)fragmentList!!.add(fragment2)fragmentList!!.add(fragment3)titleList!!.add("首页")titleList!!.add("通讯录")titleList!!.add("我的")activity_tablayout.setTabMode(TabLayout.MODE_FIXED)//不可以轮动activity_tablayout.addTab(activity_tablayout.newTab().setText(titleList!!.get(0)))activity_tablayout.addTab(activity_tablayout.newTab().setText(titleList!!.get(1)))activity_tablayout.addTab(activity_tablayout.newTab().setText(titleList!!.get(2)))activity_viewPager.adapter=MyFragmentAdapter(getSupportFragmentManager(), fragmentList!!, titleList!!,this)activity_tablayout.setupWithViewPager(activity_viewPager)for (i in 0..2) {val tab = activity_tablayout.getTabAt(i)//注意!!!这里就是添加我们自定义的布局tab!!.setCustomView(adapter!!.getCustomView(i))//这里是初始化时,默认item0被选中,setSelected(true)是为了给图片和文字设置选中效果,代码在文章最后贴出if (i == 0) {(tab!!.getCustomView()!!.findViewById(R.id.tab_iv) as ImageView).isSelected = true(tab!!.getCustomView()!!.findViewById(R.id.tab_tv) as TextView).isSelected = true}}}

demo云盘链接:https://pan.baidu.com/s/1HJKbRY0WBXGMfwmU-AP7HA

密码在线回复:QQ1085220040

kotlin工程demo链接:https://download.csdn.net/download/meixi_android/11212091

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jeecg富文本编辑器增加字体(仿宋)

jeecg富文本编辑器增加字体(仿宋) jeecg富文本编辑器增加字体(仿宋) 温馨提示&#xff1a;jeecg 提供了 uedit 富文本的实现&#xff0c;如下针对的是 uedit 增加仿宋字体示例。 主要修改三个文件&#xff1a;plug-in\ueditor\ueditor.config.js、plug-in\ueditor\lang\en\en.…

Android kotlin使用RecyclerView实例

1、创建entity类 class InternentBarEntity {var bname: String? nullvar barea: String? nullvar badddata: String? nullvar bimage: String? nullvar bid: String? null } 2、创建adapter类 /***作者&#xff1a;created by meixi*邮箱&#xff1a;15913707499…

DNS记录类型

在之前的文章中&#xff0c;我们了解了什么是DNS以及DNS如何工作&#xff0c;现在让我们来看看 DNS 记录有哪些种类&#xff0c;以及它们有什么作用。 要理解不同的 DNS 记录&#xff0c;首先必须了解区域文件是什么? 我们来解释一下各部分分别表示什么&#xff1a; A 和 AAAA…

Android 频道管理,可拖动item排列,删除,添加

样式效果 1、创建自定义GridView /*** 作者&#xff1a;created by meixi* 邮箱&#xff1a;15913707499163.com* 日期&#xff1a;2019/5/31 13*/public class DragGridView extends GridView {/** 点击时候的X位置 */public int downX;/** 点击时候的Y位置 */public int dow…

2019王小的Java学习之路

文章背景 身边有个非常要好的朋友王某某&#xff0c;因为是发小的关系&#xff0c;之后文章统称为王小。 大专毕业后 顺利 的被安排进了某某工厂工作&#xff0c;工作一段时间后&#xff0c;尽管工作比较轻松&#xff0c;却无法忍受终日的流水线生活&#xff0c;经过我的介绍&…

JVM入门到放弃之基本概念

1. 基本概念 jvm 是可运行Java代码的假想计算机&#xff0c;包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 jvm 是运行在操作系统之上的&#xff0c;屏蔽了与具体操作系统平台相关的信息&#xff0c;使得Java程序只需生成在 jvm 上运行的字节码…

java线程并发库之--线程同步工具Exchanger的使用

Exchanger可以在两个线程之间交换数据&#xff0c;只能是2个线程&#xff0c;他不支持更多的线程之间互换数据。今天我们就通过实例来学习一下Exchanger的用法。 Exchanger的简单实例 Exchanger是在两个任务之间交换对象的栅栏&#xff0c;当这些任务进入栅栏时&#xff0c;它们…

了解JVM运行时的内存分配

前言 上文中&#xff0c;在介绍运行时数据区域中的 JAVA 堆时&#xff0c;提到了 JVM 中的堆&#xff0c;一般分为三大部分&#xff1a;新生代、老年代、永久代&#xff0c;本文将进一步了解运行时的内存分配情况。 正文 1.新生代主要用来存放新生(new)的对象。一般占据堆的 …

C#:继承过程中的静态成员

在知乎上看到一个关于“泛基“的实现&#xff0c;感觉挺有意思&#xff0c;想试试效果&#xff0c;代码如下&#xff1a; public abstract class MyBase<T> where T : MyBase<T>{public static string DataForThisType { get; set; }public static T Instance { ge…

Android 分享功能大全

实现效果&#xff1a; 实现步骤&#xff1a; 1、配置SDK 2、 配置平台SDK demo云盘链接&#xff1a;https://pan.baidu.com/s/1DRr85PKtVpuexfyCc2jwsg 在线交流密码&#xff1a;QQ1085220040 demo链接&#xff1a;https://download.csdn.net/download/meixi_android/112506…

fiddler手机端抓包配置

首先&#xff0c;你得安装fiddler&#xff0c;这是前提条件&#xff0c;手机抓包有必须条件&#xff1a; 需要保持电脑和手机在同一个局域网中 &#xff08;这一点&#xff0c;我一般会在电脑上启动一个wifi&#xff0c;然后手机连接即可&#xff09; 下面说一下如何配置&#…

垃圾回收与算法

前边讲到 JVM 运行时内存的地方&#xff0c;关于新生代、老年代中 GC 垃圾回收以及垃圾回收算法&#xff0c;不知是否有点懵懵的&#xff0c;这篇一起了解一下垃圾回收以及垃圾回收算法。 一、垃圾回收需要完成的三件事 哪些内存需要回收&#xff1f;——垃圾对象&#xff08;如…

Android 起调手机QQ,联系客服

1、起调QQ聊天 public void toQQ(){// 跳转之前&#xff0c;可以先判断手机是否安装QQif (isQQClientAvailable(this)) {// 跳转到客服的QQString url "mqqwpa://im/chat?chat_typewpa&uin200870769";Intent intent2 new Intent(Intent.ACTION_VIEW, Uri.p…