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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条