android textview 黑色字体 白色描边
时间: 2023-08-23 11:06:14 浏览: 302
要在Android的TextView中实现黑色字体白色描边效果,你可以使用TextPaint和setShadowLayer方法来实现。以下是一个示例代码:
```java
TextView textView = findViewById(R.id.textView);
textView.setTextColor(Color.BLACK);
// 设置描边效果
textView.getPaint().setStyle(Paint.Style.STROKE);
textView.getPaint().setStrokeWidth(3);
textView.getPaint().setShadowLayer(0, 0, 0, Color.WHITE);
textView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
```
在上述代码中,我们首先使用`setTextColor`方法将字体颜色设置为黑色。然后,我们通过调用`getPaint()`方法获取TextPaint对象,进而使用`setStyle`方法将绘制样式设置为描边,并使用`setStrokeWidth`方法设置描边的宽度。接下来,我们使用`setShadowLayer`方法将描边效果设置为白色。最后,我们还需要调用`setLayerType`方法将TextView的图层类型设置为软件加速,以确保描边效果能够正确显示。
这样设置后,TextView的文字将显示为黑色,并带有白色的描边效果。
相关问题
android textview 黑色字体 白色描边 重写方法实现
要在Android的TextView中实现黑色字体白色描边效果,并通过重写TextView的onDraw方法来实现,可以参考以下示例代码:
```java
public class OutlinedTextView extends TextView {
private Paint strokePaint;
public OutlinedTextView(Context context) {
super(context);
init();
}
public OutlinedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public OutlinedTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
strokePaint = new Paint();
strokePaint.setStyle(Paint.Style.STROKE);
strokePaint.setStrokeWidth(3);
strokePaint.setColor(Color.WHITE);
}
@Override
protected void onDraw(Canvas canvas) {
TextPaint textPaint = getPaint();
textPaint.setStyle(Paint.Style.FILL);
textPaint.setColor(Color.BLACK);
String text = getText().toString();
canvas.drawText(text, 0, text.length(), 0, getTextSize(), strokePaint);
canvas.drawText(text, 0, text.length(), 0, getTextSize(), textPaint);
}
}
```
在上述代码中,我们创建了一个名为OutlinedTextView的自定义TextView子类。在构造方法中,我们初始化了一个用于绘制描边的Paint对象,并设置其样式、宽度和颜色。
然后,在重写的onDraw方法中,我们首先获取TextPaint对象,将其样式设置为填充并将颜色设置为黑色。然后,我们使用Canvas的drawText方法分别绘制了两次文本,一次是描边效果,一次是填充效果。通过调整绘制的位置,可以实现描边效果。
最后,在布局文件中使用OutlinedTextView代替普通的TextView即可实现黑色字体白色描边的效果。
```xml
<com.example.app.OutlinedTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:textSize="24sp"/>
```
这样设置后,OutlinedTextView将显示黑色字体,并带有白色的描边效果。
textview 字体描边无效果
实现 TextView 字体描边的方法有多种,以下是一种常见的方法:
1. 在 res/values 文件夹下新建一个名为 attrs.xml 的文件,添加以下代码:
```
<resources>
<attr name="strokeWidth" format="dimension"/>
<attr name="strokeColor" format="color"/>
</resources>
```
2. 在 TextView 标签中添加以下属性:
```
<com.example.myapp.MyTextView
android:id="@+id/myTextView"
android:text="Hello World!"
android:textSize="24sp"
app:strokeWidth="2dp"
app:strokeColor="#000000"
android:textColor="#ffffff"/>
```
其中,MyTextView 是自定义的 TextView 类,继承自 android.widget.TextView。
3. 在 MyTextView 类中重写 onDraw 方法,实现字体描边的效果:
```
public class MyTextView extends TextView {
private float strokeWidth;
private int strokeColor;
public MyTextView(Context context) {
super(context);
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyTextView);
strokeWidth = a.getDimension(R.styleable.MyTextView_strokeWidth, 0);
strokeColor = a.getColor(R.styleable.MyTextView_strokeColor, Color.BLACK);
a.recycle();
}
@Override
protected void onDraw(Canvas canvas) {
TextPaint paint = getPaint();
// 设置描边效果
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(strokeWidth);
paint.setColor(strokeColor);
// 画出描边效果
super.onDraw(canvas);
// 恢复原有的颜色和样式
paint.setStyle(Paint.Style.FILL);
paint.setColor(getCurrentTextColor());
super.onDraw(canvas);
}
}
```
注意,在重写 onDraw 方法时,需要先设置描边效果,再调用父类的 onDraw 方法画出描边效果,最后恢复原有的颜色和样式再次调用父类的 onDraw 方法,以保证正常显示字体。
阅读全文