Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> AndroidUI組件之ActionBar--基於下拉的導航方式

AndroidUI組件之ActionBar--基於下拉的導航方式

編輯:關於Android編程

 


在上一篇關於ActionBar的博文中,我們知道了ActionBar是Android3.0的重要更新之一。本篇博文就來寫一個開發中經常用到的例子。用ActionBar提供基於下拉的導航方式。

下拉式導航的ActionBar在頂端生成下拉列表框,當用戶單擊某個列表項時,系統根據用戶單擊導航指定Fragment。

為了使用ActionBar實現Tab導航,按如下步驟進行即可。

(1)調用ActionBar的actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST)方法設置使用下拉列表的導航方式。

(2)調用ActionBar的setListNavigationCallbacks(SpinnerAdapter adapter,ActionBar.OnNavigationListener callback)()添加多個列表項,並為每個列表項設置事件監聽器。其中第一個參數Adapter負責提供多個列表項,第二個參數為事件監聽器。

首先來看看布局文件



這裡的布局文件只是作為一個簡單的容器,來裝載Fragment。

下面來看一下MainActivity的源碼:
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(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

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved