Android - shadow on text?

Android

Android Problem Overview


I am wondering how to add shadow on text in android?

I have the following code which is applied on a bitmap and I wanted to be shadowed...

paint.setColor(Color.BLACK);
paint.setTextSize(55);
paint.setFakeBoldText(false);
paint.setShadowLayer(1, 0, 0, Color.BLACK); //This only shadows my whole view...

Android Solutions


Solution 1 - Android

You should be able to add the style, like this (taken from source code for Ringdroid):

  <style name="AudioFileInfoOverlayText">
    <item name="android:paddingLeft">4px</item>
    <item name="android:paddingBottom">4px</item>
    <item name="android:textColor">#ffffffff</item>
    <item name="android:textSize">12sp</item>
    <item name="android:shadowColor">#000000</item>
    <item name="android:shadowDx">1</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">1</item>
  </style>

And in your layout, use the style like this:

 <TextView android:id="@+id/info"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       style="@style/AudioFileInfoOverlayText"
       android:gravity="center" />

Edit: the source code can be viewed here: https://github.com/google/ringdroid

Edit2: To set this style programmatically, you'd do something like this (modified from this example to match ringdroid's resources from above)

TextView infoTextView = (TextView) findViewById(R.id.info);
infoTextView.setTextAppearance(getApplicationContext(),  
       R.style.AudioFileInfoOverlayText);

The signature for setTextAppearance is

> public void setTextAppearance (Context context, int resid) > > Since: API Level 1
> Sets the text color, size, style, hint color, and > highlight color from the specified TextAppearance resource.

Solution 2 - Android

You can do both in code and XML. Only 4 basic things to be set.

  1. shadow color
  2. Shadow Dx - it specifies the X-axis offset of shadow. You can give -/+ values, where -Dx draws a shadow on the left of text and +Dx on the right
  3. shadow Dy - it specifies the Y-axis offset of shadow. -Dy specifies a shadow above the text and +Dy specifies below the text.
  4. shadow radius - specifies how much the shadow should be blurred at the edges. Provide a small value if shadow needs to be prominent. Else otherwise.

e.g.

    android:shadowColor="@color/text_shadow_color"
    android:shadowDx="-2"
    android:shadowDy="2"
    android:shadowRadius="0.01"

This draws a prominent shadow on left-lower side of text. In code, you can add something like this;

	TextView item = new TextView(getApplicationContext());
	item.setText(R.string.text);
	item.setTextColor(getResources().getColor(R.color.general_text_color));
	item.setShadowLayer(0.01f, -2, 2,   getResources().getColor(R.color.text_shadow_color));

Solution 3 - Android

> http://schemas.android.com/apk/res/android" > android:layout_width="fill_parent" > android:layout_height="fill_parent" > android:orientation="vertical" > android:padding="20dp" > >
> android:id="@+id/textview" > android:layout_width="wrap_content" > android:layout_height="wrap_content" > android:layout_gravity="center_horizontal" > android:shadowColor="#000" > android:shadowDx="0" > android:shadowDy="0" > android:shadowRadius="50" > android:text="Text Shadow Example1" > android:textColor="#FBFBFB" > android:textSize="28dp" > android:textStyle="bold" /> >
> android:id="@+id/textview2" > android:layout_width="wrap_content" > android:layout_height="wrap_content" > android:layout_gravity="center_horizontal" > android:text="Text Shadow Example2" > android:textColor="#FBFBFB" > android:textSize="28dp" > android:textStyle="bold" /> >
>

In the above XML layout code, the textview1 is given with Shadow effect in the layout. below are the configuration items are

android:shadowDx – specifies the X-axis offset of shadow. You can give -/+ values, where -Dx draws a shadow on the left of text and +Dx on the right

android:shadowDy – it specifies the Y-axis offset of shadow. -Dy specifies a shadow above the text and +Dy specifies below the text.

android:shadowRadius – specifies how much the shadow should be blurred at the edges. Provide a small value if shadow needs to be prominent. android:shadowColor – specifies the shadow color


Shadow Effect on Android TextView pragmatically

Use below code snippet to get the shadow effect on the second TextView pragmatically.

> TextView textv = (TextView) findViewById(R.id.textview2); > textv.setShadowLayer(30, 0, 0, Color.RED);

Output :

enter image description here

Solution 4 - Android

If you want to achieve a shadow like the one that Android does in the Launcher, we're managing these values. They're useful if you want to create TextViews that will appear as a Widget, without a background.

android:shadowColor="#94000000"
android:shadowDy="2"
android:shadowRadius="4"

Solution 5 - Android

 <style name="WhiteTextWithShadow" parent="@android:style/TextAppearance">
    <item name="android:shadowDx">1</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">1</item>
    <item name="android:shadowColor">@android:color/black</item>
    <item name="android:textColor">@android:color/white</item>
</style>

then use as

 <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="15sp"
            tools:text="Today, May 21"
            style="@style/WhiteTextWithShadow"/>

Solution 6 - Android

Draw 2 texts: one gray (it will be the shadow) and on top of it draw the second text (y coordinate 1px more then shadow text).

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionGrendizerView Question on Stackoverflow
Solution 1 - AndroidJim SchubertView Answer on Stackoverflow
Solution 2 - AndroidcodeFoodView Answer on Stackoverflow
Solution 3 - AndroidHoque MD ZahidulView Answer on Stackoverflow
Solution 4 - AndroidRoc BoronatView Answer on Stackoverflow
Solution 5 - AndroidDan AlboteanuView Answer on Stackoverflow
Solution 6 - AndroidfhuchoView Answer on Stackoverflow