无法将RelativeLaout的所有元素转换为位图

时间:2018-03-10 11:22:01

标签: android android-layout

我的相对布局如下

<RelativeLayout
            android:id="@+id/screen_shot_relative_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/white">

            <include layout="@layout/news_content_layout" />

</RelativeLayout>

news_content_layout.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">

//some elements of code

    <TextView
        android:id="@+id/news_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <RelativeLayout
        android:id="@+id/share_footer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:layout_centerHorizontal="true"
        android:layout_gravity="center"
        android:visibility="gone"
        android:layout_below="@id/news_content">

            //Some more elements

     </RelativeLayout>

</RelativeLayout>

我想做什么?

我正在尝试将screen_shot_relative_layout(相对布局)转换为位图。

在将布局转换为位图之前,我将GONE share_footer的可见度更改为VISIBLE

问题: 位图没有share_footer。但是我可以在UI(在设备屏幕上)看到它

我的java代码:

    RelativeLayout mShareScreenShotRelativeLayout = itemView.findViewById(R.id.screen_shot_relative_layout);
    RelativeLayout mShareFooterRelativeLayout = itemView.findViewById(R.id.share_footer);

点击Share buttom后:

//Making footer_layout visible
mShareFooterRelativeLayout.setVisibility(View.VISIBLE);

Bitmap bitmap = null;
Uri bitmapUri = null;
bitmap = Utils.viewToBitmap(mShareScreenShotRelativeLayout); //This convets the Layout to image
String bitmapPath = MediaStore.Images.Media.insertImage(mContext.getContentResolver(), bitmap, String.valueOf(articleId), null);

//Sharing the content
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
                                    sharingIntent.setType("image/jpeg");
sharingIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri);
sharingIntent.putExtra(Intent.EXTRA_TEXT, "Some Text");
sharingIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
mContext.startActivity(Intent.createChooser(sharingIntent, "Share via"))

//Making  footer_layout visibility GONE
mShareFooterRelativeLayout.setVisibility(View.GONE);

bitmap没有share_footer。请告诉我                                         bitmapUri = Uri.parse(bitmapPath);

我不确定为什么会这样。页脚是父级的一部分,只有可见性已消失。请帮我理解什么是错的?

编辑:我100%确定刷新视图有一些延迟。直到View生成了Bitmap才会刷新。

现在问题是如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用这种方式

dtproductdetails

并以这种方式打电话

public Bitmap viewToBitmap(View view) {
    Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    view.draw(canvas);
    return bitmap;
}