tablelayout 和view pager 底部菜单添加文字和图片(view)方法
来源:互联网 发布:迷你小钢炮淘宝地址 编辑:程序博客网 时间:2024/06/08 01:26
1. 先创建图片和文字的选择器view,并建立xml tab文件,添加imageview和textview组件,此视图为加入到tablayout中的视图,会在adapter中将其与选择器绑定
代码如下:
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tab_iv1"/><TextView android:textSize="15sp" android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@drawable/text_selector" android:id="@+id/tab_tv1" />
2.建立文字和图片的选择器 selector格式文件
文字代码:
<!-- 未选中时字体颜色--><item android:state_selected="false" android:color ="#9E9E9E" ></item><!-- 选中时字体颜色--><item android:state_selected="true" android:color="#7CCD7C"/><!-- 非触摸模式下获得焦点并单击时的字体颜色 --><item android:state_focused="true" android:state_pressed="true"
android:color="#7CCD7C"/>
图片代码如下:
<!-- 被选择时图片--> <item android:drawable="@mipmap/og" android:state_selected="true"> </item> <!-- 未选择时图片--> <item android:drawable="@mipmap/of">
</item>
3.在adapter中建立两个数组 一为String类型,数组成员为菜单名称, 另一数组为int类型.成员为菜单图片ID 创建一个自定义方法,返回值为view 所以需要context添加view视图view为上文建立的xml视图 将两个数组设置到视图里的组件上 代码如下:
public class SendViewPagerAdapter extends FragmentPagerAdapter { private ArrayList<Fragment> datas;//因为要用将fragment加入到viewpager之中,所以内容为fragment类型的集合 private Context context; String title1 = "拨号"; String title2 = "最近通话"; String title3 = "联系人"; String title4 = "短信"; String [] titles = {title1,title2,title3,title4};//设置底部tablayoutout显示文字 private int [] imageviewId = {R.drawable.send_selector,R.drawable.call_history_selector,R.drawable.call_person_selector,R.drawable.message_selector}; public SendViewPagerAdapter(FragmentManager fm, ArrayList<Fragment> datas,Context context) {//设置构造函数,将fragment传入到viewpager中 super(fm); this.datas = datas; this.context = context; } @Override public Fragment getItem(int position) { return datas.get(position); } @Override public int getCount() { return datas.size(); } @Override//tablayout和viewpager结合之后,创建底部title使用的方法 public CharSequence getPageTitle(int position) { return null; } public View getTabView(int position) { View view = LayoutInflater.from(context).inflate(R.layout.main_tab, null); TextView textview = (TextView) view.findViewById(R.id.tab_tv1); ImageView imageview = (ImageView) view.findViewById(R.id.tab_iv1); textview.setText(titles[position]); imageview.setImageResource(imageviewId[position]); return view; }
}
4.主函数代码如下:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); datas = new ArrayList<>(); datas.add(new SendFragment());//将几个fragment加入datas中,data为fragment类型的集合 datas.add(new CallHistoryFragment()); datas.add(new ContactPersonFragment()); datas.add(new MessageFragment()); viewpager = (ViewPager) findViewById(R.id.viewpager);//绑定viewpager tablayout = (TabLayout) findViewById(R.id.tablayout);//绑定tablayout adapter = new SendViewPagerAdapter(getSupportFragmentManager(), datas,this);//初始化fragment类型adapter,datas为adapter构造函数参数 viewpager.setAdapter(adapter);//将adapter加入viewpager中// tablayout.setTabTextColors(Color.BLUE,Color.GREEN); //加入title选择和被选择的颜色,前面为未点击的颜色,后面为点击后的颜色 tablayout.setupWithViewPager(viewpager);//将tablayout与viewpager建立关系 for(int i = 0;i < tablayout.getTabCount();i++){//判断tablayout有几个菜单数量 TabLayout.Tab tab = tablayout.getTabAt(i); if (tab != null){ tab.setCustomView(adapter.getTabView(i));//将adapter设置好的获取图片和文字的方法设置到视图中 } } viewpager.setCurrentItem(1); }}
0 0
- tablelayout 和view pager 底部菜单添加文字和图片(view)方法
- View添加方法和Touches方法解析
- 完美解决View Pager和SlidingPaneLayout的滑动冲突问题
- Imagick添加文字和图片的方法
- ListView底部view添加addFooterView
- 文字和图片,图片和图片底部对齐
- View Pager Indicator_1
- view pager auto scroll
- Button添加图片和文字
- 让按钮底部的指示器的 view 的宽度和按钮里边的文字的宽度相同
- java 二维码 生成和解析 (中间:图片、文字;底部:文字)
- 可以添加头部和尾部View并且支持setOnItemClickListener和滑到底部自动加载更多的RecyclerView
- 图片切圆,label文字底部加一条线,自定义view的透明度渐变效果
- 自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解
- 同一个菜单,在view和mainframe两个类里面添加响应函数的区别
- View和ViewGroup方法解析
- View和ViewGroup常用方法
- view相关类和方法
- 最高安全横档问题(100层台阶瓶子不摔碎的最高高度)
- netty java序列化
- Caffe_02_运行mnist手写体例子
- flume安装
- java使用spring国际化文字
- tablelayout 和view pager 底部菜单添加文字和图片(view)方法
- 一天一条Linux指令-hexdump
- 【iOS开发】获取网络数据或者路径的文件名
- 安卓使用轻量级数据库SQL 简单用法
- leetcode (17) - Letter Combinations of a Phone Number
- python日常学习二------变量和数据类型
- 【原创】【NOIP】摆花问题
- linux内核通用提权漏洞expliot 脏牛Dirty COW
- StringBuiler与String的区别