获取TextView的三角形背景

时间:2015-12-29 07:19:46

标签: android background textview drawable

我正在尝试修复TextView的三角形背景,如below所示。

我正在使用以下XML代码:

<TextView
        android:id="@+id/type_textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:background="@drawable/triangle_bg"
        android:padding="1dp"
        android:text="Sponsors"
        android:textColor="#ffffff" />

这是triangle_bg.xml的代码

<item>
    <rotate
        android:fromDegrees="45"
        android:pivotX="90%"
        android:pivotY="-50%"
        android:toDegrees="-45" >
        <shape android:shape="rectangle" >
            <stroke
                android:width="1dp"
                android:color="@android:color/transparent" />

            <solid android:color="#00C6FF" />
        </shape>
    </rotate>
</item>

使用上面的代码在我的xml中生成的图像看起来像below

任何人都可以告诉我如何实现我的第一个背景中显示的三角形背景。?? 在此先感谢

我想要放置图片而不是使用textview。但我想知道是否有任何选项可以使用textview。请帮忙!!!

2 个答案:

答案 0 :(得分:0)

使用带有文字赞助商的图像,你不能改变xml矩形中两边之间的角度

答案 1 :(得分:0)

您可以使用如下所示的自定义绘图:

public class TriangleDrawable extends Drawable {

    @Override
    public void draw(Canvas canvas) {
        Paint paint = new Paint();
        paint.setAntiAlias(true);
        paint.setColor(Color.WHITE);
        Path path = new Path();
        path.moveTo(0, 0);
        path.lineTo(canvas.getWidth() / 2, canvas.getHeight());
        path.lineTo(canvas.getWidth(), 0);
        path.close();
        canvas.drawPath(path, paint);
    }
}

将此设置为TextView

的背景
findViewById(R.id.text).setBackground(new TriangleDrawable());

并确保向左/右应用填充,因为drawable只会在TextView的范围内绘制。

<TextView
    style="@style/Base.TextAppearance.AppCompat.Body1"
    android:paddingLeft="32dp"
    android:paddingRight="32dp"
    android:text="TEST"
    android:id="@+id/text"/>