Webový prehliadač WebView

OS Android umožňuje vložiť do aktivity vstavaný webový prehliadač – widget. Tento webový prehliadač môžeme použiť pri tvorbe používateľského rozhrania – napísať html kód alebo zobraziť nejakú webovú stránku, ak sme pripojený na internet. Prehliadač je postavený na jadre WebKit, ktoré tvoria jadro prehliadača Safari a Chrome.

Widget WebView sa nachádza v balíku android.webkit.

 

activity_main.xml

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

 MainActivity.java (obrázok vľavo)

Java: Kotlin:
 public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView wv = findViewById(R.id.webview);
        wv.loadUrl("http://www.fpv.umb.sk");
    }
class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val webView: WebView = findViewById(R.id.webview)
webView.loadUrl("http://www.fpv.umb.sk")
}
}
 

 MainActivity.java (obrázok vpravo)

   
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView wv = findViewById(R.id.webview);

        wv.loadUrl("http://sk.wikipedia.org/wiki/Bansk%C3%A1_Bystrica");
        wv.getSettings().setJavaScriptEnabled(true);
        wv.getSettings().setBuiltInZoomControls(true);
        wv.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
               view.loadUrl(url);
               return true;
            }
        });
    }
class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val webView: WebView = findViewById(R.id.webview)

webView.apply {
loadUrl("http://sk.wikipedia.org/wiki/Bansk%C3%A1_Bystrica")
settings.javaScriptEnabled = true
settings.builtInZoomControls = true
webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
view?.loadUrl(url)
return true
}
}
}
}
}
 

Podobne ako webový prehliadač, aj widget WebView má vlastné nastavenia. Upravením tohto nastavenia môžeme upraviť správanie prehliadača. Keď chceme nastaviť nejakú vlastnosť zavoláme metódu getSettings().

metóda

popis

setJavaScriptEnabled()

boolean metóda, ktorá zapína/vypína JavaScript

setBuiltInZoomControls()

boolean metóda, môžeme približovať/oddelovať prehliadač

setDefaultFontSize()

nastavenie veľkosti písma

Metóda setWebViewClient() prepája WebView s aktivitou. Metóda shouldOverrideUrlLoading() vráti hodnotu true, ak chceme požiadavku ošetriť sami alebo false, ak chceme použiť defaultny spôsob (napríklad načítať stránku danú URL – bez URL hlavičky).

Ak chceme zobraziť HTML kód, zavoláme metódu loadData():

Java: Kotlin:
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView wv = (WebView) findViewById(R.id.webview);

        String stranka =
                        "<html>" +
                        "<body>" +
                        "<i> HTML text</i>" +
                        "</body>" +
                        "</html>";
        wv.loadData(stranka,"text/html","UTF-8");
    }
class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val webView: WebView = findViewById(R.id.webview)

//V Kotlin môžeme použiť viacriadkový reťazec pomocou trojitých úvodzoviek """
val stranka = """
<html>
<body>
<i>HTML text</i>
</body>
</html>
""".trimIndent()

webView.loadData(stranka, "text/html", "UTF-8")
}
}
 
 

 

Podobne ako webový prehliadač, aj widget WebView má vlastné nastavenia. Upravením tohto nastavenia môžeme upraviť správanie prehliadača. Keď chceme nastaviť nejakú vlastnosť zavoláme metódu getSettings().