Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड में WebView में प्रोग्रामेटिकली स्क्रॉलिंग कैसे रोकें?

एंड्रॉइड WebView में स्क्रॉलिंग अक्षम करना

यह गाइड WebView में टच इवेंट्स को इंटरसेप्ट करके स्क्रॉलिंग को प्रोग्रामेटिकली रोकने का तरीका दिखाता है।

लेआउट (activity_main.xml)

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp">

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

MainActivity.java

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = findViewById(R.id.webView);
        
        // WebView सेटिंग्स
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setBuiltInZoomControls(true);
        webSettings.setDisplayZoomControls(false);
        
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("https://www.example.com");

        // स्क्रॉलिंग अक्षम करने के लिए OnTouchListener
        webView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // ACTION_MOVE इवेंट्स को कंज्यूम करें (स्क्रॉल रोकें)
                // लेकिन DOWN, UP, CLICK को पास होने दें
                return event.getAction() == MotionEvent.ACTION_MOVE;
            }
        });
    }

    @Override
    public void onBackPressed() {
        if (webView.canGoBack()) {
            webView.goBack();
        } else {
            super.onBackPressed();
        }
    }
}

वैकल्पिक दृष्टिकोण: कस्टम WebView क्लास

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.webkit.WebView;

public class NonScrollableWebView extends WebView {
    private boolean scrollEnabled = false;

    public NonScrollableWebView(Context context) {
        super(context);
    }

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

    public void setScrollEnabled(boolean enabled) {
        this.scrollEnabled = enabled;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (!scrollEnabled && event.getAction() == MotionEvent.ACTION_MOVE) {
            return true; // इवेंट कंज्यूम करें, स्क्रॉल न करें
        }
        return super.onTouchEvent(event);
    }
}

XML में कस्टम WebView का उपयोग

<com.example.app.NonScrollableWebView
    android:id="@+id/webView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

जावास्क्रिप्ट के माध्यम से स्क्रॉलिंग अक्षम करना

webView.evaluateJavascript(
    "document.body.style.overflow = 'hidden';", 
    null
);

महत्वपूर्ण विचार

  • ACTION_MOVE ब्लॉक करने से स्क्रॉल रुकता है लेकिन जूम/क्लिक काम करते हैं
  • उपयोगकर्ता अनुभव के लिए स्क्रॉलिंग अक्षम करने से बचें जब तक आवश्यक न हो
  • लंबे कंटेंट के लिए, स्क्रॉलिंग अक्षम करने के बजाय NestedScrollView के अंदर WebView रखने पर विचार करें
  • कुछ वेबसाइट्स अपने खुद के स्क्रॉल हैंडलिंग लागू कर सकती हैं

उपयोग के मामले

  • फिक्स्ड-हेडर/फुटर के साथ WebView
  • कस्टम स्क्रॉल कंट्रोल्स लागू करना
  • किओस्क मोड या रीड-ओनली डिस्प्ले
  1. एंड्रॉइड WebView में पासवर्ड सेव कैसे करें? एंड्रॉइड WebView में पासवर्ड सेव कैसे करें?

    एंड्रॉइड WebView में पासवर्ड सेव करने का तरीका यह उदाहरण दर्शाता है कि एंड्रॉइड WebView में फॉर्म डेटा और पासवर्ड सेव करने की सुविधा कैसे इनेबल की जाए। ध्यान दें कि setSavePassword(true) API 18 (Android 4.3) में डिप्रिकेट हो गया था और बाद के संस्करणों में काम नहीं करता। चरण 1: नया प्रोजेक्ट बनाएं A

  1. Android ऐप में WebView कैसे बनाएं? Android ऐप में WebView कैसे बनाएं?

    यह उदाहरण दर्शाता है कि Android ऐप में WebView का उपयोग करके वेब पेज कैसे लोड किया जाए और बैक बटन हैंडलिंग कैसे की जाए। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: लेआउट XML में WebView जोड़ें res/layout/activity_main.xml: <?xml version=1.0 encoding=utf-8?> <

  1. Android ऐप को प्रोग्रामेटिकली कैसे बंद करें? Android ऐप को प्रोग्रामेटिकली कैसे बंद करें?

    यह उदाहरण दर्शाता है कि Android ऐप को बटन क्लिक पर प्रोग्रामेटिकली कैसे बंद किया जाता है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project। चरण 2: लेआउट XML res/layout/activity_main.xml: <?xml version=1.0 encoding=utf-8?> <RelativeLayout xmlns:android=https://schemas