常见自定义titlebar的方法是在values文件夹中新建一个我们自己的titlebar主题,例如:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="TitlebarBackgroundStyle">
<item name="android:background">@drawable/titlebar</item>
</style>
<style name="Theme.MyCustomTheme" parent="android:Theme">
<item name="android:windowTitleBackgroundStyle">@style/TitlebarBackgroundStyle</item>
<item name="android:windowTitleSize">45dp</item>
</style>
</resources>

然后在manifest文件中为activity添加自定义主题,

<activity android:name=".MyTitleBar"
android:label="@string/app_name"
android:theme="@style/Theme.MyCustomTheme" //注意添加与此


这样就基本上完成了自定义titlebar。
声明无标题栏的方法更简单就是直接在activity中添加语句

requestWindowFeature(Window.FEATURE_NO_TITLE);

但是无论是通过上面代码定义无标题栏的activity,还是通过自定义主题重写titlebar,app首次载入时,系统总是会闪现一下app_name,然后才会运行我们定义的titlebar行为。这是一个令人诡异的行为。那么怎么去除app_name呢?

首先我们来看一下android运行app的基本原理:在系统运行一个application时,为了尽快响应用户,android首先会给用户 呈现一个app的“preview”窗口,这个界面甚至早于应用的实际进程。这个预览“preview”窗口中的信息就是从app的manifest文件 中获得的,所以一般app运行时总会显示一个具有app_name的titlebar,而不论我们在程序中如何定义我们的titlebar。所以解决的办 法来了。

首先我们可以在app的manifest文件中,给我们的main activity添加无标题栏的主题

android:theme="@android:style/Theme.NoTitleBar"

声明我们的app根本不需要titlebar,这样app首次载入便不会闪现一下带有app_name的titlebar了。这比

requestWindowFeature(Window.FEATURE_NO_TITLE);

好使得多。但是问题来了,如果我还想要app呈现我自定义的标题栏怎么办呢?

解决的办法是在需要自定义titlebar的activity中通过

setTheme(android.R.style.Theme);

声明回标题栏。
需要注意的是setTheme(android.R.style.Theme);语句需要放在oncreat()语句的最前面否则会报错的。例如:

  1. protectedvoidonCreate(BundlesavedInstanceState){
  2. //TODOAuto-generatedmethodstub
  3. setTheme(R.style.MyCustomTheme);//注意这一句的位置
  4. super.onCreate(savedInstanceState);
  5. requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
  6. setContentView(R.layout.progressbar_test);
  7. getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,//注意顺序
  8. R.layout.title); 风之境地 java-javascript 蘑菇街女装

这样运行期间系统就会直接运行我们定义的标题栏,而不是先短暂的呈现app_name,再呈现我们的标题栏特征。


更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Android问题集锦之四十六:改包名后出现Error type 3
  6. (Android)五分钟学会PopupWindow
  7. Android(安卓)File类 根据官方文档理解
  8. 【Android】PA4D_CH7 文件、保存状态和首选项
  9. android listview单击事件

随机推荐

  1. [Android]ListView性能优化之视图缓存
  2. Android SDK学习之
  3. 【笔记】【备忘】Android studio中更换AP
  4. 銆婃繁鍏ユ祬鍑篏oogle Android銆嬪嵆灏
  5. Android方向传感器实践——自己动手做指
  6. Android UI开发专题(四) View自绘控件
  7. 关于移动开发,再推荐给你5本
  8. android路径动画学习笔记
  9. Android开发
  10. 【Android】@+id与@id的区别