创build和使用片段的视图,但不可见的用户

原因

我需要这样做,因为我想获得片段视图的可绘制caching,然后从该视图创build一个位图。 这个位图将被用来在Facebook上发布。

问题

当我创build我的Fragment的时候,视图并没有被创build,因为它们没有通过Fragment Transaction添加,而且它们包含的视图对用户是不可见的。

我也不想手动绘制这些视图,因为我不会得到一个确切的复制品的屏幕。

我的问题

有没有一种方法可以使Fragment具有完整的function(与通过FragmentTransaction添加function相同),而不会显示片段?

我需要能够访问片段的视图,当它不可见。

提前致谢

  • 在自定义视图上重新使用标准的android属性
  • 设置父母视角对其子女的影响
  • AppCompat视图和普通Android视图之间的区别
  • 如何获得对应于整个屏幕的屏幕坐标,而不是触摸的视图?
  • ListView与三angular形形状的项目
  • 什么是Android DecorView?
  • 为什么食谱宣传覆盖getItemViewType和getViewTypeCount,当它似乎没有必要?
  • ContentLoadingProgressBar的示例用法
  • 另一个问题是如何将活动渲染到屏幕外的缓冲区 。 您可以使用这种技术将片段渲染到屏幕外的缓冲区中。

    该技术涉及:

    • 使用startActivityForResult()而不是startActivity()启动新的活动
    • 设置绘图caching
    • 一旦布局完成,使用getDrawingBitmap()

    我在这里给出的答案也适用于你的情况吗? 基本上它使用了不同的FragmentTransaction方法。

    有没有什么办法可以将你的碎片添加到隐藏的布局? XML示例:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/GoneFragmentContainer" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:visibility="gone" /> 

    然后在你的代码中:

     MyFragment myFragment = new MyFragment(); getSupportFragmentManager().beginTransaction() .add(R.id.GoneFragmentContainer, myFragment) .commit(); myFragment.getView().callMethodsOnMyNonVisibleFragment(); 

    我会尽量避免从View抓取Bitmap ,而是以其他方式获取它。 然后,您可以在片段的onAttach()方法中执行所需的任何处理,当您在其父活动中实例化片段时会调用片段,并在片段可见之前执行该操作。