2016-11-17 92 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" />