1. 程式人生 > >android之ActionBarActivity的用法

android之ActionBarActivity的用法

ActionBarActivity是從api 18(android4.3) 開始出現的(需要專案匯入v7包),而在這之前,api11上就允許使用ActionBar了。其實ActiveBarActivity的使用非常簡單,不過網上demo比較沒有詳細介紹的。

我將通過一個例子來詳細ActionBarActivity的使用。

1、首先建立一個簡單的android專案,專案名稱為ActionBarActivityDemo。注意:target中的api需要在api18以上

2、我們自己寫的一個方法(setActionBarLayout),該方法設定左、右邊的圖片及中間部分的標題欄資訊。

1)通過android.support.v7.app.

ActionBarActivity.getSupportActionBar();獲得系統ActionBar物件,如果你建立的工程不是繼承ActionBarActivity,將會返回null。

2)使用LayoutInflater物件設定佈局,並設定ActionBar佈局引數,通過setCustomView(view,params);

public View setActionBarLayout(Integer left, String title, Integer right) {
		ActionBar actionBar = getSupportActionBar();

		if (null != actionBar) {
			if (actionBar != null) {
				actionBar.setTitle("");
			}
			actionBar.setDisplayShowTitleEnabled(false);
			actionBar.setDisplayShowHomeEnabled(false);
			actionBar.setDisplayShowCustomEnabled(true);
			LayoutInflater inflator = (LayoutInflater) this
					.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			View v = inflator.inflate(R.layout.actionbar, null);
			ActionBar.LayoutParams layout = new ActionBar.LayoutParams(
					LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
			actionBar.setCustomView(v, layout);
			((TextView) v.findViewById(R.id.menu_title_tv)).setText(title);
			v.findViewById(R.id.menu_title_tv).setOnClickListener(this);
			if (left != null) {
				((ImageButton) v.findViewById(R.id.menu_left))
						.setImageResource(left);
			} else {
				v.findViewById(R.id.menu_left).setVisibility(View.INVISIBLE);
			}
			if (right != null) {
				((ImageButton) v.findViewById(R.id.menu_right))
						.setImageResource(right);
			} else {
				v.findViewById(R.id.menu_right).setVisibility(View.INVISIBLE);
			}
			return v;
		}
		return null;
	}

3)設定左、右按鈕的事件。

@Override
	public void onClick(View arg0) {
		switch (arg0.getId()) {
		case R.id.menu_left:
			this.finish();
			break;
		case R.id.menu_right:
			Intent intent = new Intent(this, MenuActivity.class);
			startActivity(intent);
			break;
		case R.id.menu_title_tv:
			Log.e(TAG, "title");
			break;
		}

	}