2016-11-17 42 views
0

テキストを内部に持つ平行四辺形のテキストビューを作成しようとしています(サーバーから取得した結果に基づいて動的にする必要があります)。これまではTextViewクラスを拡張してdraw(Canvas canvas)メソッドを実装していましたが、形状を描画することが判明しましたが、textViewをxmlに追加してテキストを追加しようとすると、テキストsimpyは表示されません。Androidの平行四辺形のテキストビュー

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

解決方法が完全に変化していることを発見しました。私はベクトルを使用して平行四辺形を表す描画可能なものを作成し、通常の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" /> 

関連する問題