我想使我的文本在TextView边框。我试图为我找到解决方案,但我发现只有阴影-它看起来像:x1c 0d1x的数据但我想要这样:
TextView
的如何为文本设置边框?
qnakjoqk1#
public class CoustomTextView extends TextView { private float strokeWidth; private Integer strokeColor; private Paint.Join strokeJoin; private float strokeMiter; public CoustomTextView(Context context) { super(context); init(null); } public CoustomTextView(Context context, AttributeSet attrs) { super(context, attrs); init(attrs); } public CoustomTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(attrs); } public void init(AttributeSet attrs) { if (attrs != null) { TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.CoustomTextView); if (a.hasValue(R.styleable.CoustomTextView_strokeColor)) { float strokeWidth = a.getDimensionPixelSize(R.styleable.CoustomTextView_strokeWidth, 1); int strokeColor = a.getColor(R.styleable.CoustomTextView_strokeColor, 0xff000000); float strokeMiter = a.getDimensionPixelSize(R.styleable.CoustomTextView_strokeMiter, 10); Paint.Join strokeJoin = null; switch (a.getInt(R.styleable.CoustomTextView_strokeJoinStyle, 0)) { case (0): strokeJoin = Paint.Join.MITER; break; case (1): strokeJoin = Paint.Join.BEVEL; break; case (2): strokeJoin = Paint.Join.ROUND; break; } this.setStroke(strokeWidth, strokeColor, strokeJoin, strokeMiter); } } } public void setStroke(float width, int color, Paint.Join join, float miter) { strokeWidth = width; strokeColor = color; strokeJoin = join; strokeMiter = miter; } @Override public void onDraw(Canvas canvas) { super.onDraw(canvas); int restoreColor = this.getCurrentTextColor(); if (strokeColor != null) { TextPaint paint = this.getPaint(); paint.setStyle(Paint.Style.STROKE); paint.setStrokeJoin(strokeJoin); paint.setStrokeMiter(strokeMiter); this.setTextColor(strokeColor); paint.setStrokeWidth(strokeWidth); super.onDraw(canvas); paint.setStyle(Paint.Style.FILL); this.setTextColor(restoreColor); } } }
字符串
用途:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); CoustomTextView coustomTextView = (CoustomTextView) findViewById(R.id.pager_title); } }
型
布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@mipmap/background"> <pk.sohail.gallerytest.activity.CoustomTextView android:id="@+id/pager_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:gravity="center" android:text="@string/txt_title_photo_gallery" android:textColor="@color/white" android:textSize="30dp" android:textStyle="bold" app:outerShadowRadius="10dp" app:strokeColor="@color/title_text_color" app:strokeJoinStyle="miter" app:strokeWidth="2dp" /> </RelativeLayout>
attars:
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="CoustomTextView"> <attr name="outerShadowRadius" format="dimension" /> <attr name="strokeWidth" format="dimension" /> <attr name="strokeMiter" format="dimension" /> <attr name="strokeColor" format="color" /> <attr name="strokeJoinStyle"> <enum name="miter" value="0" /> <enum name="bevel" value="1" /> <enum name="round" value="2" /> </attr> </declare-styleable> </resources>
编程:
CoustomTextView mtxt_name = (CoustomTextView) findViewById(R.id.pager_title);
型在调用setText();之前使用setStroke();方法
setText();
setStroke();
1条答案
按热度按时间qnakjoqk1#
字符串
用途:
型
布局:
型
attars:
型
编程:
型
在调用
setText();
之前使用setStroke();
方法