vistavane 2013-12-26 09:13 采纳率: 0%
浏览 2995

android自定义标题栏总是出错

采用网上说的自定义标题栏的方法:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_bar);

只要指定了Window.FEATURE_CUSTOM_TITLE则会在setContentView出错,如果去掉第一第三句只执行setContentView正常,第二句和第三句换位置也出错。而换成Window.FEATURE_NO_TITLE正常。。试了很多次都这样。急!

  • 写回答

1条回答

  • cjopengler 2013-12-26 09:56
    关注

    问题的原因是因为在 Android 4.0加入了ActionBar,所以使用这个ID就会出现
    “Caused by: android.util.AndroidRuntimeException: You cannot combine custom titles with other title features”
    这个异常。

    那么解决办法是,在 app的style中增加下面一个标识:

    <item name="android:windowActionBar">false</item>
    来去掉action bar. 但是这个方法有个限制 就是这个标识必须是api level 11以上的。
    具体如下:

    <style name="AppTheme" parent="AppBaseTheme">
    <item name="android:windowActionBar">false</item> </style>
    

    就可以解决了。
    关于这个问题再多说两句,给个建议,一般来讲 自定义titlebar 很可能是因为要和ios保持一致,不管是什么需求,一般不使用Android的自定义title bar来处理。而是使用FEATURE_NO_TITLE 标识,先去掉title bar,然后在你的acitivty layout 布局中 最上面添加一个layout来作为titlebar,其他的向下继续向下布局就好了。
    但是这样做会带来一个新的问题,就是多个activity的布局都要处理一下 比较麻烦。所以 将titlebar的定义为一个fragment,那么就实现了灵活 不依赖系统的 可定制 并且统一的title bar了。当然你的activity要继承fragment activity.

    具体的fragment使用 可以参考android的sdk文档和api demo写的很清楚。

    希望能帮到你。

    评论

报告相同问题?

悬赏问题

  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺