android自定义Actionbar遇到的一点问题【titlebar以及thme的选择】

来源:互联网 发布:淘宝众筹平台 编辑:程序博客网 时间:2024/05/16 17:01

   android中actionbar的推出主要是为了自定义一个状态栏,当然功能不止如此。。例如可以和tab结合等等。。我在使用的时候遇到的问题如下:

      我定义一个BaseActivity用来做我所有activity的父类,在这个父类中我完成actionbar的初始化【自定义一个布局】,当然我的theme默认就是android:style/Theme.Holo.Light,在这个主题下默认是存在actionbar的,但是并不是我所有的子类都需要actionbar,有几个子类需要全屏来显示,起初我怎么设置notitleBar都会将actionbar置空。。悲剧了一会发现actionbar不是可以自动控制显隐么,,呵呵呵。。。直接来看 

package com.jone.sensorapp;import android.app.ActionBar;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageButton;import android.widget.TextView;/** * Parent activity of my app * @author jone * *  2014-3-14 *  com.jone.sensorapp * */public class BaseActivity extends Activity{Context context;    ImageButton button;    TextView lableView;@Overrideprotected void onCreate(Bundle savedInstanceState){// TODO Auto-generated method stubsuper.onCreate( savedInstanceState );context = this;initActionBar();}private void initActionBar(){ActionBar actionBar = getActionBar();LayoutInflater inflater = getLayoutInflater();View view = inflater.inflate( R.layout.common_actionbar, null );button = (ImageButton) view.findViewById( R.id.ca_btn_back );lableView = (TextView) view.findViewById( R.id.ca_tv_title );button.setOnClickListener( new OnClickListener(){@Overridepublic void onClick(View v){finishActivityWithAnim();}} );actionBar.setDisplayShowCustomEnabled( false );actionBar.setDisplayShowHomeEnabled( false );//展示自定义actionbar,同时消除titlebaractionBar.setDisplayOptions( ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME| ActionBar.DISPLAY_SHOW_TITLE );actionBar.setCustomView( view );}public void startActivityWithAnim(Intent intent){startActivity( intent );overridePendingTransition( R.anim.activity_back_to_front, R.anim.activity_front_to_back );}public void finishActivityWithAnim(){finish();overridePendingTransition( R.anim.activity_front_to_back, R.anim.activity_back_to_front );}protected void setTitle(String title){lableView.setText( title );}/** * 在子类中若不想展示actionbar,设置为false即可 * @param enable */protected void setActionBarEnable(boolean enable){if(enable){getActionBar().show();}else {getActionBar().hide();}}}
估计大家还有好的方法来解决,有的话留个言哈

0 0