2016-11-17 170 views
0

我试图创建一个平行四边形的文本视图,里面有一些文本(必须是动态的,基于从服务器检索到的一些结果)。到目前为止,我扩展了实现draw(Canvas canvas)方法的TextView类,我转而绘制形状,但是当我在xml中添加我的textView并尝试添加一些文本时,不显示文本simpy。Android中的平行四边形TextView

这里是我的自定义视图:

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); 
    } 
} 

在这里,我的xml:

<ParallelogramTextView 
    android:layout_width="200dp" 
    android:layout_height="40dp" 
    android:layout_gravity="center" 
    android:text="Test" 
    android:gravity="center" 
    android:textColor="@color/colorPrimary" 
    android:id="@+id/parallelogramTextView" /> 

我不明白为什么文本不会显示。有人可以帮助我吗? 在此先感谢

回答

3

我发现一个解决方案改变完全的方法,我创建了drawable代表平行四边形形状使用向量,我用它作为一个正常的TextView的背景。 不知道这是否是最佳实践,但它对我有效。

在这里,可绘制的代码:

<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" />