lba*_*ggi 0 android canvas textview
我正在尝试创建一个平行四边形形状的文本视图,其中包含一些文本(根据从服务器检索到的一些结果,该文本必须是动态的)。到现在draw(Canvas canvas)
为止,我扩展了TextView类的实现方法,结果变成了绘制形状,但是当我在xml中添加textView并尝试添加一些文本时,simpy文本不会出现。
这是我的自定义视图:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的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" />
Run Code Online (Sandbox Code Playgroud)
我不明白为什么文字没有显示。有人可以帮我吗?提前致谢
我找到了一种彻底改变解决方案的方法,我使用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>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
425 次 |
最近记录: |