WebView 到片段中 (android.support.v4)

发布于 2025-01-05 05:44:41 字数 1143 浏览 1 评论 0原文

我使用 ViewPager 获得了一个选项卡菜单。每个选项卡都包含来自 android.support.v4 包的片段(与旧 SDK 兼容)。其中一个片段是 WebView (称为 FragmentWeb),我希望它保留在分页器布局中。问题是当我的 WebView 膨胀时,它以全屏模式运行。

有没有办法将网络浏览器保留在我的选项卡下?

谢谢

我的片段类:FragmentWeb.java

public class FragmentWeb extends Fragment {

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View mainView = (View) inflater.inflate(R.layout.fragment_web, container, false);
    WebView webView = (WebView) mainView.findViewById(R.id.webview);
    webView.loadUrl("http://www.google.com");
    return mainView;
}
}

我的片段的布局:fragment_web.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</LinearLayout>

I got a tab menu using a ViewPager. Each tab contains fragments from android.support.v4 package (compatibility with old SDKs). One of the fragment is a WebView (called FragmentWeb) and I want it to stay into the pager layout. The problem is when my WebView is inflated, it runs in fullscreen mode.

Is there a way to keep web browser under my tabs ?

Thank you

My Fragment Class : FragmentWeb.java

public class FragmentWeb extends Fragment {

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View mainView = (View) inflater.inflate(R.layout.fragment_web, container, false);
    WebView webView = (WebView) mainView.findViewById(R.id.webview);
    webView.loadUrl("http://www.google.com");
    return mainView;
}
}

My Fragment's layout : fragment_web.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</LinearLayout>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

恋你朝朝暮暮 2025-01-12 05:44:41

您可以简单地根据您的需求调整 WebViewFragment 的当前实现,方法是

import android.app.Fragment;

替换

import android.support.v4.app.Fragment;

在您自己的 WebViewFragment.java 源。

You can simply adapt the current implementation of WebViewFragment to your needs by replacing:

import android.app.Fragment;

by

import android.support.v4.app.Fragment;

in your own copy of WebViewFragment.java source.

落花浅忆 2025-01-12 05:44:41

这可以通过将以下代码添加到片段代码中的 onCreateView 并嵌入 WebViewClient 调用来完成:

                webview.setWebViewClient(new MyWebViewClient());
            webview.getSettings().setPluginsEnabled(true);
            webview.getSettings().setBuiltInZoomControls(false); 
            webview.getSettings().setSupportZoom(false);
            webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);   
            webview.getSettings().setAllowFileAccess(true); 
            webview.getSettings().setDomStorageEnabled(true);
            webview.loadUrl(mTabURL);       
        }
        return v;
    }


    public class MyWebViewClient extends WebViewClient {        
        /* (non-Java doc)
         * @see android.webkit.WebViewClient#shouldOverrideUrlLoading(android.webkit.WebView, java.lang.String)
         */


        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.endsWith(".mp4")) 
            {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setDataAndType(Uri.parse(url), "video/*");

                view.getContext().startActivity(intent);
                return true;
            } 
            else {
                return super.shouldOverrideUrlLoading(view, url);
            }
        }

This can be done by adding the following code to your onCreateView within your fragment code and embedding a WebViewClient call:

                webview.setWebViewClient(new MyWebViewClient());
            webview.getSettings().setPluginsEnabled(true);
            webview.getSettings().setBuiltInZoomControls(false); 
            webview.getSettings().setSupportZoom(false);
            webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);   
            webview.getSettings().setAllowFileAccess(true); 
            webview.getSettings().setDomStorageEnabled(true);
            webview.loadUrl(mTabURL);       
        }
        return v;
    }


    public class MyWebViewClient extends WebViewClient {        
        /* (non-Java doc)
         * @see android.webkit.WebViewClient#shouldOverrideUrlLoading(android.webkit.WebView, java.lang.String)
         */


        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.endsWith(".mp4")) 
            {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setDataAndType(Uri.parse(url), "video/*");

                view.getContext().startActivity(intent);
                return true;
            } 
            else {
                return super.shouldOverrideUrlLoading(view, url);
            }
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文