我在安卓开发方面是全新的,但我无法理解代码,我只是不知道在哪里添加 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.做任何你想做的事。