我想知道如何在android中的文本上添加阴影?
我将以下代码应用于位图,并且希望对其进行阴影处理...
paint.setColor(Color.BLACK);
paint.setTextSize(55);
paint.setFakeBoldText(false);
paint.setShadowLayer(1, 0, 0, Color.BLACK); //This only shadows my whole view...
我想知道如何在android中的文本上添加阴影?
我将以下代码应用于位图,并且希望对其进行阴影处理...
paint.setColor(Color.BLACK);
paint.setTextSize(55);
paint.setFakeBoldText(false);
paint.setShadowLayer(1, 0, 0, Color.BLACK); //This only shadows my whole view...
Answers:
您应该能够添加样式,如下所示(摘自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:要以编程方式设置此样式,您需要执行以下操作(从此示例进行修改,以匹配上方ringdroid的资源)
TextView infoTextView = (TextView) findViewById(R.id.info);
infoTextView.setTextAppearance(getApplicationContext(),
R.style.AudioFileInfoOverlayText);
的签名setTextAppearance
是
public void setTextAppearance(上下文上下文,int resid)
从以下版本开始:API级别1
设置指定TextAppearance资源中的文本颜色,大小,样式,提示颜色和突出显示颜色。
您可以同时使用代码和XML。仅需设置4个基本条件。
例如
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));
<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在文本左侧绘制阴影,在+ Dx右侧绘制阴影
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);
输出:
绘制2个文本:一个灰色(将是阴影),并在其顶部绘制第二个文本(y坐标比阴影文本多1px)。
<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"/>