7

原因

我需要这样做,因为我想获取片段视图的可绘制缓存,然后从该视图创建一个位图。该位图随后将用于在 Facebook 上发布。

问题

当我创建我的片段时,没有创建视图,因为它们没有通过片段事务添加,并且因为它们包含的视图对用户不可见。

我也不想手动绘制这些视图,因为我不会得到屏幕的精确副本。

我的问题

有没有办法让 Fragment 具有完整的功能(与通过 FragmentTransaction 添加它的功能相同)而不实际显示 Fragment?

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

提前致谢

4

4 回答 4

3

Another question addresses how to render activities into offscreen buffers. You can use this technique to render a fragment into an offscreen buffer.

The technique involves:

  • launching the new activity with startActivityForResult() instead of startActivity()
  • setup a drawing cache
  • use getDrawingBitmap() once layout is finished
于 2013-02-07T23:42:08.503 回答
1

Is there any way you can just add your Fragments to a hidden layout? Example 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" />

Then in your code:

MyFragment myFragment = new MyFragment();
getSupportFragmentManager().beginTransaction()
  .add(R.id.GoneFragmentContainer, myFragment)
  .commit();
myFragment.getView().callMethodsOnMyNonVisibleFragment();
于 2013-02-05T17:58:36.797 回答
1

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

于 2013-01-31T19:01:42.073 回答
1

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

于 2013-02-08T14:10:46.143 回答