美文网首页移动开发
通过Window的DecorView添加View到Activit

通过Window的DecorView添加View到Activit

作者: 程树欣 | 来源:发表于2016-07-28 18:46 被阅读4799次

    <p>在Android 界面组成一文中,描述说DecorView是一个FrameLayout,其中在PhoneWindow中还包含了一个mContentParent,是对DecorView布局中的ID 为 content的FrameLayout的实例化,因此我们可以通过对mContentParent 进行addView操作,将一个View绘制在Activity上层</p>

    1.获取DecorView

     View decorView = getWindow().getDecorView();
    

    2.获取ContentParent

    FrameLayout contentParent = 
    (FrameLayout) decorView.findViewById(android.R.id.content);
    

    3.将View添加到contentParent上

    TextView x = new TextView(this);
    x.setText("这是一个TextView\n通过DecorView将其绘制到了Activity上层");
    x.setGravity(Gravity.CENTER);
    x.setBackgroundColor(Color.RED);
    x.setLayoutParams(
            new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                200));
    contentParent.addView(x);
    

    4.运行结果


    Paste_Image.png

    Tips
    getWindow是Acticity的方法,在Service/BroadCastRceiver中无法获取,通样也不能操作UI

    相关文章

      网友评论

        本文标题:通过Window的DecorView添加View到Activit

        本文链接:https://www.haomeiwen.com/subject/bhbajttx.html