TabHost BottomNavigationBar

2023-12-10 19:49

本文主要是介绍TabHost BottomNavigationBar,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.直接使用TabHost控件
TabHost可以方便地在窗口中放置多个标签页,每个标签页相当于获得了一个与外部容器相同大小的摆放区域
目的:一个Activity里尽量多的显示页面TabHost
重要方法
1)TabHost getTabHost()
是TabActivity类的方法用于创建TabHost(选项卡)对象,程序要继承TabActivity
在API22里显示过时
2)addTab()
添加一个选项卡
3)tabHost.newTabSpec(String tag);
为选项卡指定一个字符串类型的Tag,该Tag用来区分不同的选项卡
4)setIndicator(String title);设置选项卡的标题
5)setContent(int resId);设置选项卡的显示内容,参数是布局文件或控件的资源索引值
<TabHostandroid:layout_width="200dip"android:layout_height="300dip"tools:layout_editor_absoluteX="70dp"tools:layout_editor_absoluteY="34dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TabWidgetandroid:id="@android:id/tabs"android:layout_width="match_parent"android:layout_height="wrap_content" /><FrameLayoutandroid:id="@android:id/tabcontent"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:id="@+id/tab1"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/tvtab1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="TextView" /></LinearLayout><LinearLayoutandroid:id="@+id/tab2"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/tvtab2"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="TextView" /></LinearLayout><LinearLayoutandroid:id="@+id/tab3"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/tvtab3"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="TextView" /></LinearLayout></FrameLayout></LinearLayout></TabHost>

public class TabHostActivity extends TabActivity {private TabHost tabHost;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//1)获取tabHost 在API22里面TabActivity已显示过时tabHost = getTabHost();//2)将activity_tab_host.xml作为窗口的显示内容LayoutInflater.from(this).inflate(R.layout.activity_tab_host,tabHost.getTabContentView(),true);//3)添加第一个标签//2)创建选项卡tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("主页").setContent(R.id.tvtab1));tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("发现").setContent(R.id.tvtab2));tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("附近").setContent(R.id.tvtab3));TextView tv1 = (TextView)findViewById(R.id.tvtab1);tv1.setText("主页内容");TextView tv2 = (TextView)findViewById(R.id.tvtab2);tv2.setText("发现页内容");TextView tv3 = (TextView)findViewById(R.id.tvtab3);tv3.setText("附近页内容");}
}

2.BottomNavigatorBar
https://github.com/Ashok-Varma/BottomNavigation
https://github.com/zhouxu88/BottomNavigationBar
官方出了BottomNavigatorBar这个底部导航控制器
1)在Gradle中增加
dependencies{
 compile 'com.ashokvarma.android:bottom-navigation-bar:2.0.4'
}

2)布局

<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"tools:context="com.xx.andbasetest.TabBottomActivity"><android.support.v4.view.ViewPagerandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"/><com.ashokvarma.bottomnavigation.BottomNavigationBarandroid:layout_gravity="bottom"android:id="@+id/bottom_navigation_bar"android:layout_width="match_parent"android:layout_height="wrap_content"/></LinearLayout>

3)代码添加
public class TabBottomActivity extends AppCompatActivity {private BottomNavigationBar bottomNavigationBar;private TextBadgeItem badgeItem;//角标@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_tab_bottom);badgeItem = new TextBadgeItem().setHideOnSelect(true) //设置选中时隐葳角标.setBackgroundColor(Color.RED).setText("10");bottomNavigationBar = (BottomNavigationBar)findViewById(R.id.bottom_navigation_bar);bottomNavigationBar.addItem(new BottomNavigationItem(R.mipmap.ic_menu_search_n,"发现").setBadgeItem(badgeItem)).addItem(new BottomNavigationItem(R.mipmap.ic_menu_cut_f,"文本")).addItem(new BottomNavigationItem(R.mipmap.ic_menu_paste_f,"附近")).addItem(new BottomNavigationItem(R.mipmap.menu_f,"动态")).initialise();//选项卡切换监听事件bottomNavigationBar.setTabSelectedListener(new BottomNavigationBar.OnTabSelectedListener() {@Overridepublic void onTabSelected(int position) {Log.i("tab"," onTabSelected position="+position);}@Overridepublic void onTabUnselected(int position) {Log.i("tab"," onTabUnselected position="+position);}@Overridepublic void onTabReselected(int position) {}});}
}参考:
http://blog.csdn.net/weihua_li/article/details/78561323



这篇关于TabHost BottomNavigationBar的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/478171

相关文章

TabHost三种方法

方式一:TabHost继承TabActivity方法相当简单 首先看布局文件activity_main.xml <?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_

Android之TabHost布局 两种方式

第一种继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost。各个Tab中的内容在布局文件中定义就行了。       第二种方式,不继承TabActivity,在布局文件中定义TabHost即可,但是TabWidget的id必须是@android:id/tabs,FrameLayout的id必须是@android:id/tabco

RelativeLayout 自定义TabHost效果

原文地址 http://www.pocketdigi.com/20110812/442.html TabHost如果要自定义显示的效果,有点麻烦,而默认的样式有时候又与我们程序的风格不匹配.今天我们就用RelativeLayout来实现与TabHost相同的功能.上效果图: 点击上面的tab,tab自身样式会改变,下面内容也会改变,功能完全与TabHost相同. 介绍一下Relat

TabHost的两种使用方法

Android 实现tab视图有2种方法,一种就是继承tabactivity,一种是在布局页面中定义<tabhost>标签, 第一种:使用系统自带写好的TabHost(及继承自TabActivity类) 其具体步骤如下: (1)使用setContentView()方法显示界面。 (2)TabHost对象获得并设置。 (3)创建并设置TabSpec对象。 (4)向Tab

5 Your TabHost must have a TabWidget whose id attribute is ‘android.R.id.tabcontent’

解决Your content must have a ListView whose id attribute is 'android.R.id.list' (2012-03-15 09:48:54) 转载▼   分类: android开发 1.错误提示:Your content must have a ListView whose id attribute is 'an

5 Your TabHost must have a TabWidget whose id attribute is 'android.R.id.tabs'

1.错误提示:Your content must have a ListView whose id attribute is 'android.R.id.list'   对于以上错误,其实可能是因为我们要实现对ListView中setOnItemClick的事件监听而去继承了LiseActivity,但是却没有ListView的标签,只要在布局文件中添加定制Layout的代码,即将Lis

tabhost学习精要

今天学习了 tabhost类   1.系统自动添加了 相对布局的代码  我们在视图布局中 在composite中直接拖动tabhost到界面上 2.把相对布局的命名空间复制粘贴到tabhost,把tabhost中的关于相对布局的代码删掉,再删除顶部的相对布局的代码和底部的标签,让tabhost直接做布局,(也可以在空布局中添加tabhost 但是会自动添加的代码很少)。此时会报告

Android控件之TabHost 转载篇

转自http://www.apkbus.com/android-720-1-1.html Tab与TabHost 这就是Tab,而盛放Tab的容器就是TabHost 如何实现?? 每一个Tab还对应了一个布局,这个就有点好玩了。一个Activity,对应了多个功能布局。 ①新建一个Tab项目,注意,不要生成main Activity 这里不要选 ②在包里面新建一个类MyTab,继承于

Android控件之TabHost

建一个Android工程tabHost,包名com.test.www man的布局文件,加了一些无关的TextView,可把这些TextView去掉 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android

使用Fragment替换TabHost

转自http://www.2cto.com/kf/201212/179843.html TabActivity在API 13(Android 3.2)被标记为过期,需要使用Fragment来实现,Fragment是Android 3.0引入的一个概念,主要就是为了适应各种不同的屏幕大小(手机、平板电脑)。Android 4.1发布时,google还发布了一个Android Support v4的