Open nguyenhuynhdeveloper opened 1 year ago
Try adding collapsable={false}
to the View
you want to capture: https://github.com/gre/react-native-view-shot/issues/482#issuecomment-1657083089
Try adding
collapsable={false}
to theView
you want to capture: #482 (comment)
Hey can you tell me in typescript it is not allowed to put collapsable={false} because there is no prop which is exporting from types in ViewShot tag is there any other way to do this or any alternate library
Try adding
collapsable={false}
to theView
you want to capture: #482 (comment)Hey can you tell me in typescript it is not allowed to put collapsable={false} because there is no prop which is exporting from types in ViewShot tag is there any other way to do this or any alternate library
You should add collapsable={false}
to the View
you want to capture and not the ViewShot
tag.
You don't necessarily have to use ViewShot
. Instead, you can use captureRef
and capture the View
tag:
import { View } from 'react-native';
import React, { useRef } from 'react';
import { captureRef } from 'react-native-view-shot';
const Capture = () => {
const viewRef = useRef();
const captureComponent = async () => {
const uri = await captureRef(viewRef);
// Do whatever you want with the uri
};
return (
<View ref={viewRef} collapsable={false}>
...
</View>
);
};
Try adding
collapsable={false}
to theView
you want to capture: #482 (comment)Hey can you tell me in typescript it is not allowed to put collapsable={false} because there is no prop which is exporting from types in ViewShot tag is there any other way to do this or any alternate library
You should add
collapsable={false}
to theView
you want to capture and not theViewShot
tag. You don't necessarily have to useViewShot
. Instead, you can usecaptureRef
and capture theView
tag:import { View } from 'react-native'; import React, { useRef } from 'react'; import { captureRef } from 'react-native-view-shot'; const Capture = () => { const viewRef = useRef(); const captureComponent = async () => { const uri = await captureRef(viewRef); // Do whatever you want with the uri }; return ( <View ref={viewRef} collapsable={false}> ... </View> ); };
Got same error and this not worked to me
I found my error: `
Any updates why on Android MaskedView is not captured?
Any solution for this on Android? I use svg Mask to solve this problem but because my component is complicated it is a lot of work and some elements like expo icons doesn't work with svg Mask. It would be great if you solve this problem, on iOS it works with no problem.
I'm using ImageBackground from react-native and continue to encounter the error on Android, even after setting collapsible to false. However, it works perfectly on iOS.
<ImageBackground
ref={viewRef}
collapsable={false}
source={{ uri: themeUriPath }}
style={{ height: '100%', width: '100%' }}
>
{renderLayers()}
</ImageBackground>
As I commented here #482 , one specific style was causing the error to me. I was already using the collapsable={false} and tried it with captureRef and captureScreen functions.
I tried all the methods above but they did not fix my issue. I have a view inside a modal. The reason may be from Android, not this lib. When I see it in the Logcat of Android Studio. I got this error:
java.lang.IllegalArgumentException: Software rendering doesn't support hardware bitmaps
I don't know how to fix it now, cause I don't relate too much to android
Anybody can invest in this error?
Try adding
collapsable={false}
to theView
you want to capture: #482 (comment)
Okay this was the most simplest, quickest suggestion ever that actually soled my issue.. but can you explain why I am totally confused why adding this onto my view worked!
adding this collapsable={false} to the view worked, but you have to reload the app
Failed to capture view snapshot i have issue , when run android
// function CaptureScreen const handleCaptureScreen = () => { captureRef(viewShotRef, { format: 'png', quality: 0.8, result: 'base64', }).then(base64 => { const option = { url: 'data:image/jpg;base64,' + base64, }; callbackCaptureSignatureView(base64); console.log('signature option', option); }); }; <View style={{ position: 'absolute', top: 0, right: 0, left: 0, bottom: 0, backgroundColor: 'transparent', borderWidth: 1, // height: size.REM * 150, // height: 150, // borderColor: colors.BG_COLOR_HEADER, // borderBottomColor: colors.BG_COLOR_HEADER, // backgroundColor: '#fff', }} disabled={true}>