我正在尝试创建一个内部带有一些文本的平行四边形文本视图(必须是动态的,基于从服务器检索到的一些结果)。到目前为止,我扩展了实现flid=30
方法的TextView类,我最终绘制了形状,但是当我在xml中添加textView并尝试添加一些文本时,文本简洁并没有出现。
这是我的自定义视图:
draw(Canvas canvas)
这是我的xml:
public class ParallelogramTextView extends TextView {
Paint mInnerPaint;
public ParallelogramTextView(Context context) {
super(context);
init();
}
public ParallelogramTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public ParallelogramTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
mInnerPaint = new Paint();
mInnerPaint.setAntiAlias(true);
mInnerPaint.setColor(Color.RED);
mInnerPaint.setStyle(Paint.Style.FILL);
mInnerPaint.setTextSize(20f);
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
Path path = new Path();
path.moveTo(getWidth(),0);
path.lineTo(getWidth()/10, 0);
path.lineTo(0, getHeight());
path.lineTo(getWidth() - (getWidth()/10),getHeight());
path.lineTo(getWidth(), 0);
canvas.drawPath(path, mInnerPaint);
}
}
我不明白为什么文字没有显示。有人可以帮帮我吗? 提前致谢
答案 0 :(得分:4)
我找到了一个完全改变方法的解决方案,我使用 Vector 创建了一个代表平行四边形的drawable,并将其用作普通TextView
的背景。
不知道这是否是最佳做法,但它对我有用。
这里是drawable的代码:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="50dp"
android:viewportWidth="200"
android:viewportHeight="50">
<path android:fillColor="@android:color/holo_red_dark"
android:pathData="M 200 0 L 20 0 L 0 50 L 180 50 L 200 0" />
</vector>