• Android ActionBar的基本用法*


     一  说明
    android 3.0后出现, 在3.0之前称为Title Bar  显示位置在标题栏上
    可以显示应用程序的图标和activity的标题
    创建方式的和系统菜单相似, 区别在于: android:showAsAction=""
    ifRoom  当ActionBar中有空间 则显示
    always  一直显示在ActionBar中
    never 永远都不显示在ActionBar中
    withText  显示文字
    collapseActionView   可以折叠

      二,  ActionBar中提供的功能
    1, 显示选项菜单的菜单项
    2, 可以使应用程序的图标作为返回上一级界面的功能
    3, 提供了交互式View 和 action View
    4, 可以实现基于Tab的导航方式, 可以切换Fragment
    5, 下拉导航
    6, ActionProvider的使用
    三, 创建方式
    1, 在res/menu 文件中创建每一个菜单项  声明<item/>
    显示方式:  showAsAction 
    图标:       icon
    2, 在Activity中, 重写父类的 onCreateOptionsMenu(Menu menu) ,加载菜单资源
    3, 在Activity中, 重写父类的 onOptionsItemSelected(MenuItem item) 处理每个Item的点击事件

    四,分割 操作栏   API 14以上  
    在清单文件中<application/> 或者<activity/> 中添加属性:android:uiOptions="splitActionBarWhenNarrow"
    五, 启动导航图标
    作用:  可以让当前App的图标作为可以点击的图标
    获取ActionBar的对象:  getActionBar()
    setDisplayShowHomeEnabled   设置是否显示应用程序的图标
    setDisplayHomeAsUpEnabled    设置应用程序的图标可以被点击, 并且在图标的左侧出现一个向左的箭头
    setHomeButtonEnabled 设置应用程序的图标可以被点击,但是没有箭头
            得到应用程序导航图标的ID:   android.R.id.home

    六, ActionBar中的常用方法
    actionBar.isShowing()  判断当前的ActionBar是否正在显示
    actionBar.show()       显示ActionBar
    actionBar.hide()       隐藏ActionBar
    七, Action View  的使用
    可以编辑动作项, 如searchView控件可以直接显示在ActionBar
    实现方式有两种:
    1, actionViewClass 属性  实现了CollapsibleActionView类
    2, actionLayout属性   把普通的布局页面显示
    八, ActionBar Tab 导航的功能   通过选项标签来切换Fragment
    ActionBar + Fragment
    1, 获取ActionBar的对象, 并且设置导航的模式为TABS
         setNavigationMode (int mode) 设置导航模式
        NAVIGATION_MODE_STANDARD   默认方式
        NAVIGATION_MODE_LIST 列表方式
        NAVIGATION_MODE_TABS tab标签模式
    2, 让当前类实现接口 TabListener , 重写3个方法
    3, 创建 每个Tab项 并且把它增加到ActionBar中
    ActionBar.Tab tab = ActionBar.newTab();
    tab.setIcon();//设置图标
    tab.stText();//设置要显示的文字
    tab.setTabListener();//设置监听

    actionBar.add(tab);//把Tab增加到ActionBar中

    九:去除ActionbBar 

              在setContentView之前 requestWindowFeature(Window.FEATURE_NO_TITLE);
               或者:Android:theme="@android:style/Theme.Black.NoTitleBar"

    实现Fragment切换实例:

    [java] view plain copy
     
     print?
    1. protected void onCreate(Bundle savedInstanceState) {  
    2.         super.onCreate(savedInstanceState);  
    3.         setContentView(R.layout.activity_main);  
    4.   
    5.         actionBar = getActionBar();  
    6.         // 获得导航模式  
    7.         actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);  
    8.         // 创建ActionBar.Tab 项, 并且把它增加到ActionBar中  
    9.         ActionBar.Tab tab = actionBar.newTab();  
    10.   
    11.         tab.setText("头条");  
    12.         tab.setIcon(R.drawable.ic_launcher);  
    13.         tab.setTabListener(this);  
    14.         actionBar.addTab(tab);  
    15.   
    16.         tab = actionBar.newTab();  
    17.         tab.setText("体育");  
    18.         tab.setIcon(R.drawable.ic_launcher);  
    19.         tab.setTabListener(this);  
    20.         actionBar.addTab(tab);  
    21.   
    22.         actionBar.addTab(actionBar.newTab().setText("财经")  
    23.                 .setIcon(R.drawable.ic_launcher).setTabListener(this));  
    24.   
    25.         actionBar.addTab(actionBar.newTab().setText("汽车")  
    26.                 .setIcon(R.drawable.ic_launcher).setTabListener(this));  
    27.     }  
    28.   
    29.     @Override  
    30.     public void onTabSelected(Tab tab, FragmentTransaction ft) {  
    31.         // TODO Auto-generated method stub  
    32.         FragmentNew f = new FragmentNew();  
    33.         Bundle b = new Bundle();  
    34.         int position = tab.getPosition();  
    35.         b.putInt("position", position);  
    36.         f.setArguments(b);  
    37.         ft.replace(R.id.f, f);  
    38.   
    39.     }  
    40.   
    41.     @Override  
    42.     public void onTabUnselected(Tab tab, FragmentTransaction ft) {  
    43.         // TODO Auto-generated method stub  
    44.   
    45.     }  
    46.   
    47.     @Override  
    48.     public void onTabReselected(Tab tab, FragmentTransaction ft) {  
    49.         // TODO Auto-generated method stub  
    50.   
    51.     }  
    52. }  
    [java] view plain copy
     
     print?
    1. public class FragmentNew extends Fragment {  
    2.     @Override  
    3.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
    4.             Bundle savedInstanceState) {  
    5.         // TODO Auto-generated method stub  
    6.         TextView t = new TextView(getActivity());  
    7.         int position = getArguments().getInt("position");  
    8.   
    9.         switch (position) {  
    10.         case 0:  
    11.             t.setText("头条");  
    12.             break;  
    13.         case 1:  
    14.             t.setText("体育");  
    15.             break;  
    16.         case 2:  
    17.             t.setText("财经");  
    18.             break;  
    19.         case 3:  
    20.             t.setText("汽车");  
    21.             break;  
    22.   
    23.         }  
    24.   
    25.         return t;  
    26.     }  
    27. }  
    [html] view plain copy
     
     print?
      1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
      2.     xmlns:tools="http://schemas.android.com/tools"  
      3.     android:layout_width="match_parent"  
      4.     android:layout_height="match_parent"  
      5.     android:paddingBottom="@dimen/activity_vertical_margin"  
      6.     android:paddingLeft="@dimen/activity_horizontal_margin"  
      7.     android:paddingRight="@dimen/activity_horizontal_margin"  
      8.     android:paddingTop="@dimen/activity_vertical_margin"  
      9.     tools:context=".MainActivity" >  
      10.   
      11.     <FrameLayout  
      12.         android:id="@+id/f"  
      13.         android:layout_width="match_parent"  
      14.         android:layout_height="match_parent" />  
      15.   
      16. </RelativeLayout>  
  • 相关阅读:
    Oracle Time Model Statistics(时间模型统计)
    IBAction:IBOutlet:注意事项
    函数何时值传递,何时指针,何时引用传递总结
    更新客户配置文件
    UML的通用机制(三)
    数学之路-数据分析进阶-区间预计与如果检验(2)
    android应用开发-从设计到实现 3-3 Sketch静态原型设计
    测试MongoDB的自动分片
    详解MongoDB中的多表关联查询($lookup) (转)
    mongodb移除分片和添加分片(转)
  • 原文地址:https://www.cnblogs.com/chenxibobo/p/6088169.html
Copyright © 2020-2023  润新知