Android Api Demos登顶之路(二十六)Action Bar Tabs
来源:互联网 发布:淘宝办签证会有假的吗 编辑:程序博客网 时间:2024/06/05 04:04
这个demo演示了如何使用actionbar的导航标签功能。通常actionbar的tab导航功能是与fragment一起结合起来使用的。基本思路:
1.定义用来显示每个tab中具体内容的fragment
2.获取当前的actionbar
3.向actionbar中添加tab(设置tab的属性,注册tab的切换监听)
4.从actionbar中删除tab
5.设置actionbar的导航模式和显示参数
MainActivity
public class MainActivity extends Activity { private ActionBar bar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取到当前的actionbar bar=getActionBar(); } /** * 向actionbar中添加新的导航标签 * * @param v */ @SuppressWarnings("deprecation") public void addNewTab(View v) { int tabCounts = bar.getTabCount(); String text = "Tab" + tabCounts; bar.addTab(bar .newTab() .setText(text)//设置tab的标题,会自动转换成大写 .setTabListener( new TabActionListener(new TabContentFragment(text))));//设置导航标签的切换监听 } /** * 切换监听类 * @author aaaa * */ @SuppressWarnings("deprecation") private class TabActionListener implements ActionBar.TabListener { /* * 将用来显示每个Tab的具体内容的fragment通过构造方法的形式传入 */ private TabContentFragment tabFragment; public TabActionListener(TabContentFragment fragment) { super(); this.tabFragment = fragment; } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { //向FrameLayout中添加当前tab的fragment ft.add(R.id.fragment_content, tabFragment); } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { //在当前tab失去焦点时,移除tab的fragment ft.remove(tabFragment); } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { //当重复选择当前标签时显示一个吐司 Toast.makeText(MainActivity.this, "Reselected", 1).show(); } } /** * 定义一个Fragment,将其添加到FrameLayout中用来显示每个标签的具体内容 * 本例只是示例地显示了一下当前标签的标题内容 * @author aaaa * */ private class TabContentFragment extends Fragment { private String mText; public TabContentFragment(String text) { super(); this.mText = text; } public String getmText() { return mText; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View fragView = inflater.inflate(R.layout.actionbar_tab_content, container, false); TextView textView = (TextView) fragView.findViewById(R.id.text); textView.setText(mText); return fragView; } } /** * 设置actionbar的导航模式和显示参数 * @param v */ @SuppressWarnings("deprecation") public void taggleTabMode(View v) { if (bar.getNavigationMode() == ActionBar.NAVIGATION_MODE_TABS) { bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE, ActionBar.DISPLAY_SHOW_TITLE); } else { bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME, ActionBar.DISPLAY_SHOW_TITLE); /*System.out.println("DISPLAY_SHOW_HOME:"+ActionBar.DISPLAY_SHOW_HOME); System.out.println("DISPLAY_SHOW_CUSTOM:"+ActionBar.DISPLAY_SHOW_CUSTOM); System.out.println("DISPLAY_SHOW_TITLE:"+ActionBar.DISPLAY_SHOW_TITLE); System.out.println("DISPLAY_HOME_AS_UP:"+ActionBar.DISPLAY_HOME_AS_UP); System.out.println("DISPLAY_USE_LOGO:"+ActionBar.DISPLAY_USE_LOGO);*/ } } //删除最后一个导航标签 public void removeLastTab(View v){ int tabCounts=bar.getTabCount(); if(tabCounts>0){ bar.removeTabAt(tabCounts-1); } } //删除所有导航标签 public void removeAllTabs(View v){ if(bar.getTabCount()>0){ bar.removeAllTabs(); } }}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <FrameLayout android:id="@+id/fragment_content" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </FrameLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="vertical"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Add new tab" android:onClick="addNewTab"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Remove last tab" android:onClick="removeLastTab"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Toggle tab mode" android:onClick="taggleTabMode"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Remove all tabs" android:onClick="removeAllTabs"/> </LinearLayout></LinearLayout>
action_bar_content.xml
<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/text" ></TextView>
0 0
- Android Api Demos登顶之路(二十六)Action Bar Tabs
- Android Api Demos登顶之路(二十五)Action Bar Mechanics
- Android Api Demos登顶之路(二十七)Action Bar Usage
- Android Api Demos登顶之路(十六)Recreate
- Android Api Demos登顶之路(二十八)Setting Action Provider
- Android Api Demos登顶之路(二十九)Share Action Provider
- Android Api Demos登顶之路(二)
- Android Api Demos登顶之路(二十二)SetWallpaper
- Android Api Demos登顶之路(二十三)SoftInputModes
- Android Api Demos登顶之路(二十五)Wallpaper
- Android Api Demos登顶之路(四十二)Fragment-->Nesting Tabs
- Android Api Demos登顶之路(五十一)Notification-->Status Bar
- Android Api Demos登顶之路(三)
- Android Api Demos登顶之路(四)
- Android Api Demos登顶之路(五)
- Android Api Demos登顶之路(六)
- Android Api Demos登顶之路(七)
- Android Api Demos登顶之路(八)
- 关于String.split(String regex, int limit)
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- 【小熊刷题】implement strstr()
- PyQt5初级教程--PyQt5中绘画[11/13]
- 使用python执行复制时遇到的一点问题
- Android Api Demos登顶之路(二十六)Action Bar Tabs
- 笔记:Mysql--Date型数据的存储
- mesos集群部署教程
- gtk+程序在关闭主窗口时的事件流
- toString的推荐写法
- 三个因素决定你的薪水高低
- 开源中国源码学习(四)——主界面总体认识
- singlefile.py
- 【Leetcode】Edit Distance #72