Android中的平行四边形TextView

时间:2016-11-17 15:25:06

标签: android canvas textview

我正在尝试创建一个内部带有一些文本的平行四边形文本视图(必须是动态的,基于从服务器检索到的一些结果)。到目前为止,我扩展了实现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);
   }
}

我不明白为什么文字没有显示。有人可以帮帮我吗? 提前致谢

1 个答案:

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