Android - 文字阴影?

时间:2010-03-21 11:51:59

标签: android

我想知道如何在android中的文本上添加阴影?

我有以下代码应用于位图,我想要被遮蔽......

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

6 个答案:

答案 0 :(得分:373)

您应该可以添加样式,如此(取自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>

在你的布局中,使用这样的风格:

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

编辑:可以在此处查看源代码:https://github.com/google/ringdroid

EDIT2: 要以编程方式设置此样式,您可以执行以下操作(从this example修改以匹配上面的ringdroid资源)

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

setTextAppearance的签名是

  

public void setTextAppearance(Context context,int resid)

     

自:API级别1   设置文本颜色,大小,样式,提示颜色和   突出显示指定TextAppearance资源的颜色。

答案 1 :(得分:68)

您可以在代码和XML中执行这两项操作。只需设置4个基本内容。

  1. 阴影颜色
  2. 阴影Dx - 它指定阴影的X轴偏移。您可以给 - / +值,其中-Dx在文本左侧绘制阴影,在右侧绘制+ Dx
  3. shadow Dy - 它指定阴影的Y轴偏移。 -Dy指定文本上方的阴影,+ Dy指定文本下方。
  4. 阴影半径 - 指定阴影应在边缘处模糊的程度。如果阴影需要突出,请提供一个小值。否则。
  5. e.g。

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

    这会在文本的左下方绘制一个突出的阴影。 在代码中,您可以添加类似的内容;

        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));
    

答案 2 :(得分:5)

<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="20dp" >

    <TextView
        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" />

    <TextView
        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" />

</LinearLayout>

在上面的XML布局代码中,textview1在布局中具有阴影效果。以下是配置项

android:shadowDx –指定阴影的X轴偏移。您可以指定-/ +值,其中-Dx在文本左侧绘制阴影,在+ D​​x右侧绘制阴影

android:shadowDy –指定阴影的Y轴偏移。 -Dy在文本上方指定阴影,+ Dy在文本下方指定。

android:shadowRadius –指定应在边缘模糊多少阴影。如果阴影需要突出,则提供较小的值。 android:shadowColor –指定阴影颜色


实用的Android TextView阴影效果

使用下面的代码片段以实用的方式在第二个TextView上获得阴影效果。

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

输出:

enter image description here

答案 3 :(得分:3)

如果您希望获得类似于Android在Launcher中执行的阴影,我们将管理这些值。如果您想要创建将显示为Widget而没有背景的TextView,它们将非常有用。

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

答案 4 :(得分:2)

绘制2个文本:一个灰色(它将是阴影),并在其上绘制第二个文本(y坐标比阴影文本多1个像素)。

答案 5 :(得分:1)

 <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>

然后用作

 <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"/>