#android
#Android
Вопрос:
Я все еще пытаюсь создать действие, имитирующее техническое руководство. В предыдущем вопросе было предложено, чтобы я мог использовать WebView в своей деятельности, а затем просто создать и вызвать фактическую веб-страницу / html-документ (который будет содержать технические инструкции, подобные моему руководству). Это похоже на то, что я хочу сделать….
Я создал простую веб-страницу под названием test.htm и поместил его в свою папку RAW, а затем попытался реализовать приведенный ниже код в рамках моей деятельности. Мой вопрос заключается в следующем: Как мне настроить мой XML-файл для использования WebView? Нужен ли мне вообще XML-файл? Занимает ли строка WebView …. место setContentView? Может кто-нибудь помочь мне уточнить, как именно использовать WebView в моей деятельности?
Activity5 публичного класса расширяет Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView manual=new WebView(null);
manual.loadData(Utilities.getData(this, R.raw.test),"text/html", "utf-8");
..дополнительный код….
но пока просто пытаюсь понять, как WebView работает в контексте действия и в отношении любых требуемых представлений XML.
Спасибо!
Ответ №1:
Как мне настроить мой XML-файл для использования WebView?
Просто создайте обычный файл макета с WebView
в нем. С точки зрения макета a WebView
существенно не отличается, скажем, от a ListView
.
Нужен ли мне вообще XML-файл?
Если все действие будет просто a WebView
, вы могли бы создать a WebView
в Java-коде и передать его в setContentView()
. Однако, пожалуйста, передайте Activity
в качестве параметра WebView
конструктору, а не null
.
Может кто-нибудь помочь мне уточнить, как именно использовать WebView в моей деятельности?
Я бы порекомендовал вам вставить свой HTML в assets/test.html
и использовать file:///android_asset/test.html
с loadUrl()
тем, что вы делаете сейчас.
Комментарии:
1. Хорошо … не уверен на 100%, почему вы делаете некоторые из приведенных выше предложений (т. Е. Зачем использовать loadUrl по сравнению с loadData..
Ответ №2:
Это работает для файла «help/index.html » в ресурсах относительные ссылки на другие файлы ресурсов работают должным образом.
Я добавил функциональность кнопки «Назад»:
public class WebHelp extends Activity {
WebView wv = null ;
TextView txtvTitle ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.help_layout);
wv = (WebView) findViewById(R.id.help_webview) ;
wv.getSettings().setBuiltInZoomControls(true) ; // enable pinch-to-zoom
wv.setWebViewClient(wvClient) ;
txtvTitle = (TextView) findViewById(R.id.help_title) ;
// ''/android_asset'' is a special prefix for asset file Url's
String url = "file:///android_asset/help/index.html" ;
wv.loadUrl(url) ;
}
public void onBackPressed() {
if (wv.canGoBack()) {
wv.goBack() ;
}
else {
super.onBackPressed() ;
}
}
WebViewClient wvClient = new WebViewClient() {
@Override
public void onPageFinished(WebView mywv, String url) {
// set web page title to the R.id.help_title widget
String title = mywv.getTitle() ;
if (title != null) {
txtvTitle.setText( title) ;
}
else txtvTitle.setText("untitled") ;
}
}
}
С помощью help_layout.xml с
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@ id/help_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
/>
<WebView
android:id="@ id/help_webview"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
/>
</LinearLayout>