片段Android导航抽屉中的HTML

时间:2014-12-29 22:12:21

标签: android html webview navigation fragment

我是关于Android开发的新手,但我无法理解代码,我只是不知道在哪里添加WebView代码。

我的源代码,片段和每个片段的XML,但是在哪里添加webview以加载每个片段的本地HTML?,在尝试以离线模式写入GameGuide时,我已经在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(默认布局)。

创建了heroes.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;
    }
}

3 个答案:

答案 0 :(得分:0)

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

// 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文件加载到webview中(这是不同的)。

所以,改为使用:

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

答案 1 :(得分:0)

所以在HeroesFragment的getView()中,您可以执行以下操作

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

然后你可以随心所欲地做任何你想做的事。

答案 2 :(得分:0)

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

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。