博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android ActionBar详解(二):ActionBar实现Tabs标签以及下拉导航
阅读量:6759 次
发布时间:2019-06-26

本文共 2628 字,大约阅读时间需要 8 分钟。

一.添加标签 Tabs

 

  在ActionBar中实现标签页可以实现android.app.ActionBar.TabListener ,重写onTabSelected、onTabUnselected和onTabReselected方法来关联Fragment。代码如下:

 

  1. private class MyTabListener implements ActionBar.TabListener {  
  2.   private TabContentFragment mFragment;  
  3.    public TabListener(TabContentFragment fragment) {  
  4.    mFragment = fragment;  
  5.   }  @Override  
  6.   public void onTabSelected(Tab tab, FragmentTransaction ft) {  
  7.   ft.add(R.id.fragment_content, mFragment, null);  
  8.   }  
  9.  @Override  
  10.  public void onTabUnselected(Tab tab, FragmentTransaction ft) {  
  11.  ft.remove(mFragment);  
  12.  }  
  13.  @Override  
  14.  public void onTabReselected(Tab tab, FragmentTransaction ft) {  
  15.  }  
  16.   
  17. }  

接下来我们创建ActionBar在Activity中,代码如下;

 

 
  1. <strong>@Override  
  2. protected void onCreate(Bundle savedInstanceState) {  
  3. super.onCreate(savedInstanceState);  
  4. setContentView(R.layout.main);  
  5. final ActionBar actionBar = getActionBar(); //提示getActionBar方法一定在setContentView后面  
  6. actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);  
  7. actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);  
  8. Fragment artistsFragment = new ArtistsFragment();  
  9. actionBar.addTab(actionBar.newTab().setText(R.string.tab_artists).setTabListener(new TabListener(artistsFragment)));  
  10. Fragment albumsFragment = new AlbumsFragment();  
  11. actionBar.addTab(actionBar.newTab().setText(R.string.tab_albums).setTabListener(new TabListener(albumsFragment)));  
  12. }</strong>  

二. 添加下拉导航 Drop-down Navigation:

 

 

创建一个SpinnerAdapter提供下拉选项,和Tab方式不同的是Drop-down只需要修改下setNavigationMode的模式,将ActionBar.NAVIGATION_MODE_TABS改为ActionBar.NAVIGATION_MODE_LIST,最终改进后的代码为 

  1. <strong>ActionBar actionBar = getActionBar();  
  2. actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);  
  3. actionBar.setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback);</strong>  

上面我们通过setListNavigationCallbacks方法绑定一个SpinnerAdapter控件,具体的OnNavigationListener代码示例为;

 

  1. <strong> mOnNavigationListener = new OnNavigationListener() {  
  2.  String[] strings = getResources().getStringArray(R.array.action_list);  
  3.   @Override  
  4.   public boolean onNavigationItemSelected(int position, long itemId) {  
  5.   ListContentFragment newFragment = new ListContentFragment();  
  6.   FragmentTransaction ft = openFragmentTransaction();  
  7.   ft.replace(R.id.fragment_container, newFragment, strings[position]);  
  8.   ft.commit();  
  9.   return true;  
  10. }  
  11.   
  12. };</strong>  

 而其中的ListContentFragment的代码为:

 

    1. public class ListContentFragment extends Fragment {  
    2. private String mText;  
    3.   
    4. @Override  
    5. public void onAttach(Activity activity) {  
    6. super.onAttach(activity);  
    7. mText = getTag();  
    8. }  
    9.   
    10. @Override  
    11. public View onCreateView(LayoutInflater inflater, ViewGroup container,  
    12. Bundle savedInstanceState) {  
    13. TextView text = new TextView(getActivity());  
    14. text.setText(mText);  
    15. return text;  
    16. }  
翻译结果
【JAVA
鉴于
plaincopy

转载地址:http://nofeo.baihongyu.com/

你可能感兴趣的文章
CentOS 7安装WordPress
查看>>
mybatis的jdbcType和javaType、oracle,MySQL的对应类型
查看>>
openxml in sql server
查看>>
Relational Algebra 关系代数
查看>>
node的http请求
查看>>
蓝牙Profile的概念和常见种类(转)
查看>>
Kafka 配置
查看>>
Ddr2,ddr3,ddr4内存条的读写速率
查看>>
MySQL 索引与查询优化
查看>>
static final常量变量的正确书写规范
查看>>
vue项目关闭eslint检查
查看>>
微服务技术栈
查看>>
NPOI workbook.RemoveSheetAt(0); 删除sheet页 次序 sheettmpRequire.CopySheet("Require", true);...
查看>>
Go标准库:深入剖析Go template
查看>>
ant design pro (四)新增页面
查看>>
uni - 使用npm
查看>>
ASP.NET Core多语言 (转载)
查看>>
java中比较两个double类型值的大小
查看>>
golang ----gc问题
查看>>
WPF去除边框的方法
查看>>