214 votes

Effet d'ombre pour un texte dans Android ?

Duplicata possible :
Android - ombre sur le texte ?

Comment puis-je créer un effet d'ombre sur un texte dans un TextView .

Une idée ?

0 votes

Vous pouvez également consulter ce lien stackoverflow.com/a/51761610/4307338

441voto

Codeversed Points 1418

Mettez-les dans values/colors.xml

<resources>
    <color name="light_font">#FBFBFB</color>
    <color name="grey_font">#ff9e9e9e</color>
    <color name="text_shadow">#7F000000</color>
    <color name="text_shadow_white">#FFFFFF</color>
</resources>

Ensuite, dans votre layout xml, voici quelques exemples de TextViews

Exemple de texte flottant sur une lumière avec une ombre foncée

<TextView android:id="@+id/txt_example1"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:textSize="14sp"
                  android:textStyle="bold"
                  android:textColor="@color/light_font"
                  android:shadowColor="@color/text_shadow"
                  android:shadowDx="1"
                  android:shadowDy="1"
                  android:shadowRadius="2" />

enter image description here

Exemple de texte gravé sur une lumière avec une ombre foncée

<TextView android:id="@+id/txt_example2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="14sp"
                android:textStyle="bold"
                android:textColor="@color/light_font"
                android:shadowColor="@color/text_shadow"
                android:shadowDx="-1"
                android:shadowDy="-1"
                android:shadowRadius="1" />

enter image description here

Exemple de texte clair sur une lumière avec une ombre foncée.

<TextView android:id="@+id/txt_example3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="14sp"
                android:textStyle="bold"
                android:textColor="@color/grey_font"
                android:shadowColor="@color/text_shadow_white"
                android:shadowDx="-2"
                android:shadowDy="-2"
                android:shadowRadius="1" />

enter image description here

Remarquez les valeurs positives et négatives... Je vous suggère de jouer avec les couleurs/valeurs vous-même, mais en fin de compte vous pouvez ajuster ces paramètres pour obtenir l'effet que vous recherchez.

10 votes

Dans mon cas, il n'était pas visible dans l'aperçu de l'éditeur d'Android, mais il fonctionne sur l'appareil réel comme un charme !!!

0 votes

Vous pouvez également consulter ce lien stackoverflow.com/a/51761610/4307338

0 votes

Une réponse solide et bien documentée visuellement.

211voto

Pontus Gagge Points 12950

Vous pourriez peut-être envisager d'utiliser Android:shadowColor , android:shadowDx , android:shadowDy , android:shadowRadius ou bien setShadowLayer() ?

2 votes

Cela n'apporte aucun changement. Je pense que cela fonctionne. Mais les valeurs que j'ai définies posent problème. Pouvez-vous afficher l'exemple de valeur de shadowdx , shadowdy y shadowradious ?

19 votes

Vous devriez poster votre code. En attendant, vérifiez le balisage dans des exemples comme mobile.tutsplus.com/tutorials/Android/customize-Android-fonts (faites défiler la page jusqu'à la section Text Shadow).

2 votes

Quelles sont les unités pour le shadowdx, shadowdy et shadowradius ?

66voto

DanM Points 681
TextView textv = (TextView) findViewById(R.id.textview1);
textv.setShadowLayer(1, 0, 0, Color.BLACK);

3 votes

Il semble ignorer la couleur et utiliser ce que le texte utilise.

0 votes

Vous pouvez également consulter ce lien stackoverflow.com/a/51761610/4307338

1voto

Hitesh Sahu Points 12561

Réponse complète

Ajoutez ces 2 lignes à la vue parent, sinon l'ombre du texte sera coupée lorsque la vue est plus petite que le décalage de l'ombre.

Android:clipChildren="false" (en anglais)

Android:clipToPadding="false" (en anglais)

EXEMPLE :

<androidx.constraintlayout.widget.ConstraintLayout
            android:clipChildren="false"
            android:clipToPadding="false"
           ... >

        <TextView
         style="@style/TextShadowStyle"
          ....
            />

Style d'ombre du texte :

 <style name="TextShadowStyle">
        <item name="android:shadowColor">@color/black</item>
        <item name="android:shadowDx">10</item>
        <item name="android:shadowDy">10</item>
        <item name="android:shadowRadius">5</item>
    </style>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X