2011-08-24 1 views
12

Nel mio programma Webview viene caricato in un layout separato quando si fa clic sul pulsante. quel layout ha solo quella vista web. Voglio aggiungere un bordo per questo. Aggiungo XML separato come segue allo sfondo per quella webview ma è non funziona.Come impostare il bordo per la webview Android

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="#FFFFFF" /> 
<stroke android:width="10dp" android:color="#000000" /> 
<padding android:left="2dp" android:top="2dp" android:right="2dp"android:bottom="2dp"/> 
</shape> 

come posso aggiungere un bordo per WebView in Android ..? grazie

+1

potrebbe riferirsi a questo [SO risposta] (http://stackoverflow.com/questions/7074546/border-texture-for-a-view/7074764# 7074764)? –

risposta

22

Racchiudere la visualizzazione Web in un layout, aggiungere il bordo al layout e mantenere un riempimento di 2 dpi nel layout.

+0

grazie del suo lavoro .. !! – Miuranga

+0

qualsiasi motivo specifico per cui è necessario il padding? –

+0

Forse un po 'in ritardo, ma il padding è come margine per gli oggetti, quindi il padding è necessario per evitare la sovrapposizione della webview nello sfondo del layout –

4

WebView non può avere Drawable come sfondo - vedere WebView.onDraw in WebView.java. Ha solo colori solidi, impostazione predefinita o tratto da contenuto HTML. La soluzione è (come già suggerito) per rendere WebView figlio di un altro Widget.

4

La risposta di Abhinav è giusta, sto solo aggiungendo queste informazioni aggiuntive per principianti assoluti come me che incontrano questa risposta e non so ancora come "racchiudere la WebView in un layout" o "aggiungi il bordo a lo schema"; si spera che possa aiutare qualcuno:

  1. Creare una nuova cartella sotto /res e denominarlo drawable (avrete già drawable-hdpi, drawable-mdpi, ecc; questi sono per diverse risoluzioni - questa nuova directory drawable saranno utilizzati a prescindere risoluzione).
  2. Creare un nuovo file XML sotto drawable e denominarlo border.xml (in Android Studio, è possibile fare clic con il tasto destro sulla directory drawable e fare clic su Nuovo> File di risorse disegnabile).
  3. Incolla l'intero contenuto dell'XML di miuranga in border.xml e salvalo. Questo è chiamato "Risorse disegnabili" e verrà inserito nel file di layout nel passaggio successivo.
  4. Nel file di layout, creare un nuovo layout attorno a WebView, come ho fatto in seguito con LinearLayout del bambino. Si noti che LinearLayout recupera la risorsa estraibile con l'attributo android:background impostato su @drawable/border. Credo che stia recuperando border.xml dal nome del file meno l'estensione. Aggiungendo il bordo al layout che racchiude la WebView, si ottiene visivamente un bordo attorno alla Webview, che funziona bene.

contenuti activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.test.app.MainActivity" 
    android:orientation="vertical"> 
<LinearLayout android:background="@drawable/border" 
        android:layout_width="match_parent" 
        android:layout_height="380px"> 
    <WebView xmlns:android="http://schemas.android.com/apk/res/android" 
         android:id="@+id/webview" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" /> 
    </LinearLayout> 
</LinearLayout> 
+0

Grazie a questo ha funzionato alla grande per me. Un'altra cosa da aggiungere: puoi aggiungere un android: padding = "5dp" alla radice LinearLayout (il primo) per dare al bordo un po 'di spazio dai bordi dello schermo. –