Response-native - Как прокрутить веб-просмотр внутри scrollview для Android?

Я хочу использовать WebView внутри ScrollView для моего собственного родного приложения. Но если я это сделаю, я не смогу прокрутить свой веб-просмотр, если не отключу прокрутку в scrollview. Однако мне нужен прокрутка как в scrollview, так и в webview. Любые предложения или решения о том, как это сделать?

Ответ 1

Я также ищу эту проблему в Интернете в течение последних 2-3 дней, и у меня есть отличное решение для этого...

npm install --save react-native-webview-autoheight

После установки без проблем

import MyWebView from 'react-native-webview-autoheight';

<ScrollView style={{ flex: 1, backgroundColor: 'white' }}>
            <View style={{ flex: 1, flexDirection: 'column', backgroundColor: 'white' }} pointerEvents={'none'}>

                <Text>Hi I am at top</Text>
                <MyWebView 
                //sets the activity indicator before loading content
                    startInLoadingState={true}
                    source={{
                        uri: "https://stackoverflow.com/questions/43781301/react-native-how-do-i-scroll-a-webview-inside-scrollview-for-android"

                    }}/>
                    <Text>Hi I am at bottom</Text>
            </View>
        </ScrollView>

это прекрасно работает для меня..

Ответ 2

Попробуйте следующий код

<ScrollView>
        <Text>Text before ScrollView</Text>
        <WebView
          source={{ uri: 'https://stackoverflow.com/questions/43781301/react-native-how-do-i-scroll-a-webview-inside-scrollview-for-android' }}
          style={{
            marginTop: 20,
            height: 100,
          }}
        />
        <Text >Text after ScrollView</Text>
        <WebView
          source={{ uri: 'https://stackoverflow.com/questions/43781301/react-native-how-do-i-scroll-a-webview-inside-scrollview-for-android' }}
          style={{
            marginTop: 20,
            height: 100,
          }}
        />
      </ScrollView>

Ответ 3

использовать TouchyWebView.java

public class TouchyWebView extends WebView {
public TouchyWebView(Context context) {
    super(context);
}

public TouchyWebView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public TouchyWebView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    requestDisallowInterceptTouchEvent(true);
    return super.onTouchEvent(event);
}

и в макете

<yourpachagename.TouchyWebView
                android:id="@+id/webView"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

Ответ 4

Попробуйте этот код

heightValue = 1000 // putting 100 will let the Webview scroll normally.

<View> <Text> Viewtiful </Text> </View>  

<WebView
    source={{uri: 'www.reddit.com'}}
    style={{height:heightValue}}
/> 

Нашел это здесь.