int titleId = RUtils.getResId("com.android.internal.R", "id", "title_container");
View titleView = thiz.getWindow().findViewById(titleId);
RUtils 是我写的一个工具类, 在此不给出了。cebug的时候可以获取 titleId  
但是titleView 确实空,
该代码在onCreate执行。 请问这是为啥呢?

解决方案 »

  1.   


    thiz.getWindow().findViewById(titleId); 
    getWindow()  而不是 context。 还要一定在setContentView 之后调用么?况且我代码中没有这句啊, 只是纯粹的设置title ?? 
    难道跟这个有关系么?
      

  2.   

    要么id错了,要么view还没生成。
      

  3.   


    如果使用 findViewById 方法,必须要在 setContentView 之后才可以用,不然是得不到的
      

  4.   

    得先加载布局才能findviewbyid到你要的id,要不你的找不到的
      

  5.   

    看了下ViewGroup 遍历时 flag应该没问题,所以怀疑在decor时没有添加到DecorView
    有空跟踪下再看看不过即使拿到这个title_container 解决了填充不满的问题,
    自定义title还会有“载入activity时 屏幕先黑一下”的问题建议还是把自定义title放到main.xml中
      

  6.   

    估计你是反射得到的titleId,你可以在不同手机上log输出下这个titleId
    这个应该是一个固定值,是你编译的那个系统的值,但是不同手机的这个系统值 是不同的,所以你得不到解决办法:
    FrameLayout decorView = (FrameLayout) getWindow().getDecorView();
    LinearLayout child = (LinearLayout) decorView.getChildAt(0);
    FrameLayout titleView = child.getChildAt(0);
      

  7.   

    setContentView 之后用     不先获取xml, xml里的东西你怎么能随便拿????
      

  8.   


    不要用应用层的思维来看这个问题
    setContentView 只是把你自己的布局添加到已有的系统布局中,
    title_container 是系统的布局中的节点