zoukankan      html  css  js  c++  java
  • AndroidUI组件之ActionBar--基于下拉的导航方式

     


    在上一篇关于ActionBar的博文中。我们知道了ActionBarAndroid3.0的重要更新之中的一个。本篇博文就来写一个开发中经经常使用到的样例。用ActionBar提供基于下拉的导航方式。

    下拉式导航的ActionBar在顶端生成下拉列表框。当用户单击某个列表项时,系统依据用户单击导航指定Fragment

    为了使用ActionBar实现Tab导航。按例如以下步骤进行就可以。

    1)调用ActionBaractionBar.setNavigationModeActionBar.NAVIGATION_MODE_LIST)方法设置使用下拉列表的导航方式。

    2)调用ActionBarsetListNavigationCallbacks(SpinnerAdapter adapter,ActionBar.OnNavigationListener callback)()加入多个列表项。并为每一个列表项设置事件监听器。当中第一个參数Adapter负责提供多个列表项,第二个參数为事件监听器。

     

    首先来看看布局文件

     

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
    

    这里的布局文件仅仅是作为一个简单的容器,来装载Fragment

    以下来看一下MainActivity的源代码:
    <pre class="java" name="code">package com.gc.actionbar_dropdownnav;
    
    import android.os.Bundle;
    import android.annotation.SuppressLint;
    import android.app.ActionBar;
    import android.app.ActionBar.OnNavigationListener;
    import android.app.Activity;
    import android.app.Fragment;
    import android.app.FragmentTransaction;
    
    import android.view.Menu;
    import android.widget.ArrayAdapter;
    /**
     * 
     * @author Android将军
     *
     */
    @SuppressLint("NewApi")
    public class MainActivity extends Activity implements OnNavigationListener{
    	private static final String SELECTED_ITEM="selected_item";
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		final ActionBar actionBar=getActionBar();
    		//设置ActionBar是否显示标题
    		actionBar.setDisplayShowTitleEnabled(true);
    		//设置导航模式,使用List导航
    		actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    		//为actionBar安装ArrayAdapter
    		actionBar.setListNavigationCallbacks(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,android.R.id.text1,new String[]{"第一页","第二页","第三页"}), this);
    	}
    
    	
    
    	@Override
    	public boolean onNavigationItemSelected(int itemPosition, long itemId) {
    		// 创建一个新的Fragment对象
    		Fragment fragment=new DummyFragment();
    		//创建一个Bundle对象。用于向Fragment传入參数
    		Bundle args=new Bundle();
    		args.putString(DummyFragment.ARG_SECTION_NUMBER, "Android将军"+(itemPosition+1));
    		//向fragment传入參数
    		fragment.setArguments(args);
    		//获取FragmentTransaction对象
    		FragmentTransaction ft=getFragmentManager().beginTransaction();
    		//使用fragment取代该Activity中的container
    		ft.replace(R.id.container, fragment);
    		//提交事务
    		ft.commit();
    		return true;
    	}
    
    }
    

    
    

    本案例中用到的DummyFragment的源代码例如以下:

    package com.gc.actionbar_dropdownnav;
    
    import android.annotation.SuppressLint;
    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    public class DummyFragment extends Fragment{
    	public static final String ARG_SECTION_NUMBER="section_number";
    	//该方法的返回值就是该Fragment显示的View组件
    
    	@SuppressLint("NewApi")
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    			Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		TextView textView=new TextView(getActivity());
    		textView.setGravity(Gravity.START);
    		//获取创建该Fragment时传入的參数Bundle
    		Bundle args=getArguments();
    		//设置TextView显示的文本
    		textView.setText(args.getString(ARG_SECTION_NUMBER)+"");
    		textView.setTextSize(30);
    		return textView;
    	}
    	
    
    }




    案例效果例如以下图所看到的:

    转载请注明出处:http://blog.csdn.net/android_jiangjun/article/details/38434965

  • 相关阅读:
    SQL Server 系统视图
    T-SQL 批处理
    T-SQL游标
    SQL Server执行计划的理解
    SQL Server 非聚集索引的覆盖,连接,交叉和过滤 <第二篇>
    SQL Server 分区表
    SQL Server 文件和文件组
    SQL Server逻辑读、预读和物理读
    mysql 报错ERROR 1064 (42000),原因使用了mysql保留字 (right syntax to use near 'groups)
    docker Redis的主从配置
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5347601.html
Copyright © 2011-2022 走看看