如何在我视图的左上角绘制三角形?

时间:2017-08-24 22:42:05

标签: android android-drawable

我创建了这个drawable:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item  >
        <rotate
            android:fromDegrees="45"
            android:toDegrees="10"
            android:pivotX="100%"
            android:pivotY="-0%" >
            <shape
                android:shape="rectangle"   >
                <solid
                    android:color="@color/color_primary"  />
            </shape>

        </rotate>
    </item>
</layer-list>

在预览中,它看起来像这样:

enter image description here

我已将其加入View

        <View
        android:id="@+id/my_view"
        android:layout_width="32dp"
        android:layout_height="32dp"
        android:background="@drawable/triangle"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        />

这个View在预览(和手机)上看起来像这样:

enter image description here

为什么View只是在三角形预览中显示角落上的三角形?另外,我应该提一下,我希望它填充View方块的一半,基本上是从右上角到左下角。

感谢。

编辑:我有一个建议使用:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item  >
        <rotate
            android:fromDegrees="45"
            android:toDegrees="-135"
            android:pivotX="90%"
            android:pivotY="-45%" >
            <shape
                android:shape="rectangle"   >
                <solid
                    android:color="@color/color_primary"  />
            </shape>

        </rotate>
    </item>
</layer-list>

这确实会产生角三角形,但它不会填充View方形的一半。这就是它的作用: enter image description here

2 个答案:

答案 0 :(得分:9)

我会使用<vector> drawable而不是<layer-list>来解决这个问题。

<vector
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">

    <path
        android:fillColor="@color/color_primary"
        android:pathData="M0 24v-24h24z"/>

</vector>

enter image description here

答案 1 :(得分:0)

将您的XML更改为以下内容,它将按您的意愿运行。

triangle.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item  >
        <rotate
            android:fromDegrees="45"
            android:toDegrees="-135"
            android:pivotX="90%"
            android:pivotY="-45%" >
            <shape
                android:shape="rectangle"   >
                <solid
                    android:color="@color/color_primary"  />
            </shape>

        </rotate>
    </item>
</layer-list>

Preview
Device screenshot