2011-11-04 2 views
1

J'ai LinearLayout avec forme fond et WebView à l'intérieur. Comment couper WebView le long de la bordure de la forme?Comment couper les bordures de la mise en page enfant?

Je souhaite que WebView corresponde à la forme et que WebView ne présente aucun angle aigu.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:padding="5dip" > 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/bg_border" 
    android:orientation="vertical" > 

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

    </LinearLayout> 
</LinearLayout> 

bg_border.xml

<?xml version="1.0" encoding="utf-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
<stroke 
    android:width="1dp" 
    android:height="1dp" 
    android:color="@color/border" /> 

<corners 
    android:radius="5dp" 
    android:bottomRightRadius="5dp" 
    android:bottomLeftRadius="5dp" 
    android:topLeftRadius="5dp" 
    android:topRightRadius="5dp" /> 

enter image description here

Répondre

0

Je serais prêt à parier que vous ne pouvez simuler cela. Créez une autre forme avec un rayon (plus petit) et rendez-la blanche. Mettez cela autour de votre vue web. Cela ne fonctionnera évidemment pas si la page que vous regardez n'est pas blanche.

De même, vous n'avez pas besoin de définir topLeft/bottomRight/etc si vous définissez déjà "radius" et que toutes les valeurs sont identiques.

MISE À JOUR Idées. Les deux impliquent une image source comme ceci: http://www.noiseindustries.com/downloads/misc/FxFactoryHelp/pluginguide/generators/roundedrectangle/files/ni-rounded-rectangle.jpg

Assurez-vous simplement que la bordure est BEAUCOUP plus petite. 3-5 pixels. Le centre blanc doit être transparent et non blanc.

1) Créez un RelativeLayout et créez des images pour les côtés et les coins. Avec la mise en page et les images, vous disposez essentiellement les images de sorte que vous "dessinez" une bordure. Ne mettez rien au centre. Créez un FrameLayout, placez le webview, puis placez le RelativeLayout en haut. Si tout va bien, les événements tactiles au centre tomberont sur le webview, mais vous donneront toujours une bordure douce autour des bords.

2) Créez une image de 9 patchs qui ressemble fondamentalement à la bordure décrite en 1. Faites la même FrameLayout décrite en 1, et ajoutez le Webview. En plus de cela, ajoutez une vue CUSTOM. Définissez l'arrière-plan sur le patch 9 et assurez-vous que la vue personnalisée passe sur tous ses événements tactiles.

Je pense que le numéro 1 serait plus facile à mettre en œuvre, mais qui sait?

+0

La couleur de la page va changer, donc ce n'est pas mon chemin. Merci pour le commentaire sur "rayon". – Sviatoslav

+0

Je vais choisir le premier. Je pensais qu'il y a un moyen plus simple :) – Sviatoslav

Questions connexes