Android开发之底部导航栏标准
以下是封装的库源码:
package com.example.oldtab; import java.util.ArrayList; import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.support.v4.app.FragmentTabHost;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TabHost;
import android.widget.TextView; public class NsFragmentTabHost implements TabHost.OnTabChangeListener {
private FragmentTabHost fragmentTabHost;
private LayoutInflater layoutInflater;
private Resources resources;
private ArrayList<NsFragmentItem> tabs;
private NsFragmentItem preItem; NsFragmentTabHost(FragmentTabHost tabhost, ActionBarActivity activity) {
this(tabhost, activity, android.R.id.tabcontent);
} NsFragmentTabHost(FragmentTabHost tabhost, ActionBarActivity activity,
int realContentid) {
fragmentTabHost = tabhost;
tabs = new ArrayList<NsFragmentItem>();
layoutInflater = activity.getLayoutInflater();
resources = activity.getResources();
tabhost.setup(activity.getBaseContext(),
activity.getSupportFragmentManager(), realContentid);
tabhost.setOnTabChangedListener(this);
} public View newTabView(int layoutid, int backgroung, String title) {
TextView tv = (TextView) layoutInflater.inflate(layoutid, null);
tv.setText(title);
Drawable draw = resources.getDrawable(backgroung);
tv.setCompoundDrawablesWithIntrinsicBounds(null, draw, null, null);
return tv;
} public void AddTab(NsFragmentItem item) {
tabs.add(item);
fragmentTabHost.addTab(fragmentTabHost.newTabSpec(item.tag)
.setIndicator(item.view), item.fragment, null);
} public NsFragmentItem getTabByTag(String tag) {
for (NsFragmentItem item : tabs) {
if (item.tag == tag) {
return item;
}
}
return null;
} @Override
public void onTabChanged(String tabId) {
NsFragmentItem item = getTabByTag(tabId);
if (item != null) {
if (preItem != null) {
preItem.view.setBackgroundResource(preItem.upStyle);
}
preItem = item;
item.view.setBackgroundResource(item.downStyle);
}
} public static class NsFragmentItem {
public View view;
public String tag;
public Class<?> fragment;
public int downStyle;
public int upStyle;
}
}
下面就是示例,如何使用上面的库
package com.example.oldtab; import android.os.Bundle;
import android.support.v4.app.FragmentTabHost;
import android.support.v7.app.ActionBarActivity;
import android.view.View; import com.example.oldtab.NsFragmentTabHost.NsFragmentItem; public class Main extends ActionBarActivity { private static final String TAG_PERSON = "person";
private static final String TAG_GROUP = "group";
private static final String TAG_SETTING = "setting"; private NsFragmentTabHost nsTabHost;
private FragmentTabHost tabHost; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
nsTabHost = new NsFragmentTabHost(tabHost, this, R.id.realtabcontent);
View i1 = nsTabHost.newTabView(R.layout.tabitem,
R.drawable.ic_action_person, "个人");
View i2 = nsTabHost.newTabView(R.layout.tabitem,
R.drawable.ic_action_group, "集体");
View i3 = nsTabHost.newTabView(R.layout.tabitem,
R.drawable.ic_action_settings, "设置");
NsFragmentItem item1 = new NsFragmentItem();
item1.view = i1;
item1.tag = TAG_PERSON;
item1.fragment = PersonFragment.class;
item1.downStyle = R.drawable.tab_spec_down;
item1.upStyle = R.drawable.tab_spec_nomal;
NsFragmentItem item2 = new NsFragmentItem();
item2.view = i2;
item2.tag = TAG_GROUP;
item2.fragment = GroupFragment.class;
item2.downStyle = R.drawable.tab_spec_down;
item2.upStyle = R.drawable.tab_spec_nomal;
NsFragmentItem item3 = new NsFragmentItem();
item3.view = i3;
item3.tag = TAG_SETTING;
item3.fragment = SettingFragment.class;
item3.downStyle = R.drawable.tab_spec_down;
item3.upStyle = R.drawable.tab_spec_nomal;
nsTabHost.AddTab(item1);
nsTabHost.AddTab(item2);
nsTabHost.AddTab(item3);
}
}
Android开发之底部导航栏标准的更多相关文章
- [置顶]
xamarin android Fragment实现底部导航栏
前段时间写了篇关于Fragment的文章,介绍了基础的概念,用静态和动态的方式加载Fragment Xamarin Android Fragment的两种加载方式.下面的这个例子介绍xamarin ...
- Android UI-仿微信底部导航栏布局
现在App基本的标配除了侧滑菜单,还有一个就是底部导航栏,常见的聊天工具QQ,微信,购物App都有底部导航栏,用户可以随便切换看不同的内容,说是情怀也好,用户体验也罢.我们开发的主要的还是讲的是如何如 ...
- Android商城开发系列(三)——使用Fragment+RadioButton实现商城底部导航栏
在商城第一篇的开篇当中,我们看到商城的效果图里面有一个底部导航栏效果,如下图所示: 今天我们就来实现商城底部导航栏,最终效果图如下所示: 那么这种效果是如何实现,实现的方式有很多种,最常见的就是使 ...
- Android应用底部导航栏(选项卡)实例
现在很多android的应用都采用底部导航栏的功能,这样可以使得用户在使用过程中随意切换不同的页面,现在我采用TabHost组件来自定义一个底部的导航栏的功能. 我们先看下该demo实例的框架图: 其 ...
- Android 修改底部导航栏navigationbar的颜色
Android 修改底部导航栏navigationbar的颜色 getWindow().setNavigationBarColor(Color.BLUE); //写法一 getWindow().set ...
- Android底部导航栏——FrameLayout + RadioGroup
原创文章,转载请注明出处http://www.cnblogs.com/baipengzhan/p/6285881.html Android底部导航栏有多种实现方式,本文详细介绍FrameLayout ...
- Android底部导航栏创建——ViewPager + RadioGroup
原创文章,引用请注明出处:http://www.cnblogs.com/baipengzhan/p/6270201.html Android底部导航栏有多种实现方式,本文详解其中的ViewPager ...
- Android学习笔记- Fragment实例 底部导航栏的实现
1.要实现的效果图以及工程目录结构: 先看看效果图吧: 接着看看我们的工程的目录结构: 2.实现流程: Step 1:写下底部选项的一些资源文件 我们从图上可以看到,我们底部的每一项点击的时候都有不同 ...
- Android底部导航栏
Android底部导航栏 今天简单写了一个底部导航栏,封装了一个库,用法比较简单 效果图 Github地址:https://github.com/kongqw/KqwBottomNavigation ...
随机推荐
- [转]PHP SOCKET编程
FROM : http://blog.csdn.net/hguisu/article/details/7448528 1. 预备知识 一直以来很少看到有多少人使用php的socket模块来做一些事情, ...
- 对拍练习:A+B
源程序: /* Problem: OJ: User: S.B.S. Time: Memory: Length: */ #include<iostream> #include<cstd ...
- OA系统权限管理设计方案【转】
l 不同职责的人员,对于系统操作的权限应该是不同的.优秀的业务系统,这是最基本的功能. l 可以对“组”进行权限分配.对于一个大企业的业务系统来说,如果要求管理员为其下员工逐一分配系统操作权限的话,是 ...
- 接收连接basic_socket_acceptor
概述 TCP有一处和UDP不同的地方是TCP是面向连接的,TCP有建立连接.通信.关闭连接的操作,Boost.Asio提供了ip::tcp::acceptor用来接收新的TCP连接,底层由socket ...
- QT 5.12 安装MinGW 7.3.0 32bit
一.下载MinGW 7.3.0 32bit for QT 5.12 链接:https://pan.baidu.com/s/1IKDhvxEbKIgmWyQQhpdnTw提取码:ubxc 二.解压缩并将 ...
- 第二章 BIO与NIO
<netty权威指南>读书笔记 一.BIO 1.服务端程序: package bio; import java.io.BufferedReader; import java.io.IOEx ...
- DLL文件实现窗体的模板模式
机房合作版中第一次使用了模板方法,实现了类似窗体的界面和代码的复用..窗体继承有两种方法,一种是通过继承选择器从已编译的程序集合里选择,另一种则是通过DLL文件的方式继承.个人觉得DLL还是比较方便的 ...
- leetcode Roman Integer
class Solution { public: int romanToInt(string s) { if (s.length() < 1) return 0; map<char,int ...
- 8Manage PMP 项目管理工具
范围与需求管理 8Manage 项目管理平台提供先进的机制集中管理项目的范围与需求: 提供需求申请功能:获取,过滤,解析和明确项目的需求 提供需求矩阵功能:整理分析需求并跟踪需求从开始到完成的整个过程 ...
- easyui基于web的打印实现 .
<%@ page language="java"pageEncoding="UTF-8"%> <object id="WebBrow ...