android自定义Actionbar遇到的一点问题【titlebar以及thme的选择】
2014-03-14 09:51
477 查看
android中actionbar的推出主要是为了自定义一个状态栏,当然功能不止如此。。例如可以和tab结合等等。。我在使用的时候遇到的问题如下:
我定义一个BaseActivity用来做我所有activity的父类,在这个父类中我完成actionbar的初始化【自定义一个布局】,当然我的theme默认就是android:style/Theme.Holo.Light,在这个主题下默认是存在actionbar的,但是并不是我所有的子类都需要actionbar,有几个子类需要全屏来显示,起初我怎么设置notitleBar都会将actionbar置空。。悲剧了一会发现actionbar不是可以自动控制显隐么,,呵呵呵。。。直接来看
我定义一个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; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.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() { @Override public void onClick(View v) { finishActivityWithAnim(); } } ); actionBar.setDisplayShowCustomEnabled( false ); actionBar.setDisplayShowHomeEnabled( false ); //展示自定义actionbar,同时消除titlebar actionBar.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(); } } }估计大家还有好的方法来解决,有的话留个言哈
相关文章推荐
- 通过adb logcat读取保存android日志
- 10个常见的Android 新手误区
- Android抢先截获短信(源码分析)
- android之JNI开发步骤总结
- android selector的使用方法2:代码实现
- android selector的使用详解!
- android图文介绍NDK安装及简单jni demon的实现
- Android Binder机制的Native应用—双向通信
- 启动android模拟器没有反应,Failed to open the HAX device!
- 用Android自带的signapk.jar + .x509.pem + .pk8签名应用程序
- android开发和跨平台开发的对比
- Android - R资源未找到至java文件报错
- Android - R资源未找到至java文件报错
- 安装时加入外部数据库示例(android外部数据库)
- android 开发之activity之间传递数据
- android解析XML总结(SAX、Pull、Dom三种方式)
- android基础入门生命周期(1)
- android中The connection to adb is down,问题和解决
- [锋客计划]Android Design 翻译计划
- Android Studio下集成ShareSDK