细数android 自定义activity的title 中的坑(自定义title整个过程)

  次阅读 作者:智能小宝 来源:互联网 2016-01-14 10:39 我要评论(0)

会使用搜索引擎的童鞋都知道搜一下怎么实现

然后出来一大堆相同的结果,就是下面这一段代码

[java]

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

setContentView(view);

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);

他们给你什么答案了么?没有,别用国内搜索引擎了,博客都TM是转载的,那些SB博主们,赶紧滚粗

下面我就给你们论论这之中会有哪些坑:

1.

[java]

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

这句话必须放在setConentView之前,大家都知道,因此这句话就像在AndroidManifest.xml中进行配置一样,设置了之后你就不能设置requestWindowFeature(Window.FEATURE_NO_TITLE),因为他们之间是互斥的。

2.

能够自定义标题栏,但是怎么更改自己放进去布局里面的内容呢?

这个实际上很简答, 只要findViewById(R.layout.title中的某个View的id)就能获取到控件了,拿它来做相应的操作就行了

3.

你要动态隐藏和显示标题栏怎么办呢?

你会搜到好多这样的结果:

((ViewGroup)getWindow().

findViewById(com.android.internal.R.id.title_container)).setVisibility(View.GONE);

出于好心,我告诉你,这个方法是获取不到这个layout的,因为,com.android.internal.R.id.title_container是受限的,所以你获取到的是null

所以说,要获取到正确的title_container的话,就只能用反射了,代码如下

[java]

public static Object reflactFiled(String className, String filedName){

Object result = null;

try {

result = Class.forName(className).getField(filedName).get(null);

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (SecurityException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (NoSuchFieldException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

return result;

}

调用这个函数来获取titleContainer的id吧,然后你就知道怎么获取到这个ViewGroup了

[java]

protected int getTitleContainerId(){

Object obj = Utils.reflactFiled("com.android.internal.R$id", "title_container");

if(obj != null){

return (Integer) obj;

}

else{

return -1;

}

}

4.

前面我只是说这个titleContainer是ViewGroup,但是,具体一点,它是一个FrameLayout

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...