Je voudrais créer la même bordure de ce LinearLayout que l'exemple:
Dans cet exemple, nous pouvons voir que la bordure n'est pas la même tout autour du linearLayout. Comment puis-je créer cela à l'aide d'un fichier XML dessinable?
Pour l'instant, je n'ai pu créer qu'une simple bordure tout autour du LinearLayout comme ceci:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners
android:radius="1dp"
android:topRightRadius="0dp"
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp" />
<stroke
android:width="1dp"
android:color="#E3E3E1" />
<solid android:color="@color/blanc" />
</shape>
android
border
android-linearlayout
Wawanopoulos
la source
la source
background
propriété pour cela ... créer un fichier XML avec une forme comme un rectangle, une couleur et un effet d'ombre et le définir comme arrière-plan pour votre mise en page linéaire ..Réponses:
Essaye ça..
la source
"0dp"
par"1dp"
dans la réponse d'Hariharan.<gradient>
dans votre<shape>
pour améliorer l'effet de bordure, et aussi si c'est vraiment l'effet dont votre interface utilisateur a besoin au lieu d'une simple bordure de couleur unie.C'est pourquoi CardView existe. CardView | Développeurs Android
C'est juste un FrameLayout qui prend en charge l'élévation dans les appareils pré-sucette.
Pour l'utiliser, vous devez ajouter une dépendance à
build.gradle
:la source
J'obtiens les meilleurs résultats en utilisant un graphique 9 patch.
Vous pouvez simplement créer un graphique de patch 9 individuel en utilisant l'éditeur suivant: http://inloop.github.io/shadow4android/
Exemple:
Le graphique 9 patch:
Le résultat:
La source:
la source
ok, je sais que c'est trop tard. mais j'avais la même exigence. j'ai résolu comme ça
1. Commencez par créer un fichier xml (exemple: border_shadow.xml) dans le dossier "drawable" et copiez-y le code ci-dessous.
2. maintenant sur la mise en page où vous voulez l'ombre (exemple: LinearLayout) ajoutez ceci dans android: background
et cela a fonctionné pour moi.
la source
C'est si simple:
Créez un fichier dessinable avec un dégradé comme celui-ci:
pour l'ombre sous une vue
below_shadow.xml
pour l'ombre au-dessus d'une vue
above_shadow.xml
et ainsi de suite pour l'ombre droite et gauche changez simplement l'angle du dégradé :)
la source
Vous pouvez également utiliser une image de patch 9 comme arrière-plan de votre mise en page, ce qui permet des ombres plus «naturelles»:
Résultat:
Mettez l'image dans votre
/res/drawable
dossier.Assurez-vous que l'extension de fichier est
.9.png
, non.png
À propos, il s'agit d'une modification (réduite à la taille minimale du carré) d'une ressource existante trouvée dans le dossier API 19 sdk resources.
J'ai laissé les marqueurs rouges, car ils ne semblent pas nuisibles, comme indiqué dans l'outil draw9patch.
[ÉDITER]
Environ 9 patchs, au cas où vous n'auriez jamais rien à voir avec eux.
Ajoutez-le simplement comme arrière-plan de votre vue.
Les zones marquées en noir (à gauche et en haut) s'étirent (verticalement, horizontalement).
Les zones marquées en noir (à droite, en bas) définissent la "zone de contenu" (où il est possible d'ajouter du texte ou des vues - vous pouvez appeler les régions non marquées "padding", si vous le souhaitez).
Tutoriel: http://radleymarx.com/blog/simple-guide-to-9-patch/
la source
Vous créez un fichier .xml dans drawable avec le nom drop_shadow.xml:
Ensuite:
la source
Utilisez cette seule ligne et j'espère que vous obtiendrez le meilleur résultat;
utilisation:
android:elevation="3dp"
Ajustez la taille autant que vous en avez besoin et c'est le moyen le meilleur et le plus simple d'obtenir l'ombre comme des boutons et d'autres ombres Android par défaut. Faites-moi savoir si cela a fonctionné!la source
Si vous avez déjà la bordure de la forme, ajoutez simplement une élévation:
la source
1. Créez d'abord un nom de fichier xml shadow.xml dans le dossier "drawable" et copiez-y le code ci-dessous.
Ajoutez ensuite la liste des calques comme arrière-plan dans votre LinearLayout.
la source
la source
Je sais que c'est tard mais cela pourrait aider quelqu'un.
Vous pouvez utiliser un constraintLayout et ajouter la propriété suivante dans le xml,
la source
J'ai trouvé le meilleur moyen de résoudre ce problème.
Vous devez définir un arrière-plan rectangle solide sur la mise en page.
Utilisez ce code -
ViewCompat.setElevation(view , value)
Sur l'ensemble de mises en page parent
android:clipToPadding="false"
la source
ViewCompat.setElevation()
méthode sur la classe ViewCompat:public void setElevation(View view, float elevation) {}
. Comme vous pouvez le voir, ce n'est pas implémenté. Je doute vraiment que cela vous aide, et je me demande vraiment si vous avez réellement testé votre propre réponse, lol