HTML inside a Fragment Android Navigation Drawer



我在安卓开发方面是全新的,但我无法理解代码,我只是不知道在哪里添加 WebView 代码。

我的源代码,有片段,每个片段都有它的XML,但是在哪里添加webview来加载每个片段的本地HTML?,因为我试图在离线模式下编写游戏指南,我已经在HTML中拥有它只需要把它放在代码中。

谢谢:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">
    <WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/WebViewHeroes" />
</LinearLayout>

}

编辑:

阅读后我发现了错误,每次我都会调用 HOME(默认布局)与我的新布局重叠。

创造了英雄.xml并被Deafult调用,然后更改代码加载URL,编码完成在这里

public class HeroesFragment extends Fragment {
    public HeroesFragment(){}
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState){
       View rootView = inflater.inflate(R.layout.heroes, container, false);
        WebView heroespage = (WebView) rootView.findViewById(R.id.heroeswiki);
        heroespage.loadUrl("file:///android_asset/hola.html");
       return rootView;
    }
}

onCreateView()中获取View rootView变量后的Fragment s 中,执行以下操作:

// Get your HTML
String yourHTML = "<p>Some <b>html</b> you have somewhere</p>";
// Get a handle on your webview
WebView webViewHeroes = (WebView) root.findViewById(R.id.WebViewHeroes);
// Populate webview with your html
webViewHeroes.loadData(yourHTML, "text/html", null);

编辑

我的答案使用带有 HTML 的字符串。您实际上想要将 html 文件加载到 Web 视图中(这是不同的)。

因此,请改用这个:

// Populate webview with your html
webViewHeroes.loadUrl("file:///android_asset/hola.html");

我发现这样做我得到了最好的结果:

String HTML = "Some HTML resource";  
WebView webView = new WebView(getActivity());
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
webView.loadDataWithBaseURL(null, HTML, "text/html", "utf-8", null);

需要设置部分来显示特殊字符。

在上面的示例中,我动态生成一个 WebView,然后将其添加到我的布局中。对于您的情况,代码应如下所示:

public class HeroesFragment extends Fragment {
    public HeroesFragment(){}
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.home, container, false);
        WebView webView = (WebView)rootView.findViewById(R.id.webViewHeroes);
        String HTML = "Some HTML resource";
        WebSettings settings = webView.getSettings();
        settings.setDefaultTextEncodingName("utf-8");
        webView.loadDataWithBaseURL(null, HTML, "text/html", "utf-8", null);
        return rootView;
    }

现在我不知道您是否计划在同一片段中显示几个不同的 HTML 页面,但您只需使用另一个 HTML 资源发出loadDataWithBaseURL

此外,如果您需要支持javascript,缩放等,则必须在加载之前将这些设置添加到WebView中。

所以在英雄片段的getView()中,你执行以下操作

if (rootView){ WebView v = (WebView)rootView.findViewById(R.id.WebViewHeroes); }

然后你可以直接V.做任何你想做的事。

相关内容

  • 没有找到相关文章

最新更新