在Android的右上角的RelativeLayout上绘制三角形

时间:2015-08-26 09:21:46

标签: android xml android-layout

我想在RelativeLayout的右上角绘制一个三角形。

我使用以下代码创建了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="45"
            android:pivotX="-40%"
            android:pivotY="87%" >
            <shape
                android:shape="rectangle" >
                <stroke android:color="@color/darkblue" android:width="10dp"/>
                <solid
                    android:color="@color/blue" />
            </shape>
        </rotate>
    </item>
</layer-list>

并且遵循了这篇文章:

https://looksok.wordpress.com/2013/08/24/android-triangle-arrow-defined-as-an-xml-shape/

问题是我使用三角形作为RelativeLayout

的背景
    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <RelativeLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginBottom="7dp">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="false"
            android:layout_alignParentRight="false"
            android:layout_marginTop="5dp">

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="80dp"
                android:layout_marginTop="0dp">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:id="@+id/taskTitle"
                    android:text="title"
                    android:layout_gravity="left"
                    android:textSize="15sp"
                    android:textStyle="bold" />

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="5dp"
                    android:paddingBottom="5sp">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textAppearance="?android:attr/textAppearanceSmall"
                        android:text="@string/standort"
                        android:id="@+id/textView23" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textAppearance="?android:attr/textAppearanceSmall"
                        android:id="@+id/taskLocation"
                        android:text="location"
                        android:textSize="12sp"
                        android:layout_marginLeft="3sp" />

                </LinearLayout>

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textAppearance="?android:attr/textAppearanceSmall"
                        android:id="@+id/textView22"
                        android:text="@string/objekt" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textAppearance="?android:attr/textAppearanceSmall"
                        android:id="@+id/taskObject"
                        android:text="object"
                        android:textSize="12sp"
                        android:layout_marginLeft="3sp" />

                </LinearLayout>

            </LinearLayout>

        </LinearLayout>

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tasklistDone"
            android:layout_gravity="right"
            android:layout_alignParentEnd="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="8dp" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/taskImage"
            android:adjustViewBounds="true"
            android:maxHeight="60dp"
            android:maxWidth="60dp"
            android:minHeight="50dp"
            android:minWidth="50dp"
            android:layout_alignParentLeft="false"
            android:layout_alignParentTop="false"
            android:layout_alignParentStart="true"
            android:layout_marginLeft="10dp"
            android:layout_centerVertical="true" />

        <RelativeLayout
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:rotation="45"
            android:background="@drawable/triangle"
            android:layout_alignParentEnd="true">

        </RelativeLayout>

    </RelativeLayout>

</LinearLayout>

它看起来像: enter image description here

我需要做些什么才能使三角形位于角落?

1 个答案:

答案 0 :(得分:0)

您的布局文件中有一些错误。所以我稍微改了一下......请在此代码中更改您正在使用的资源..

xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="wrap_content"
android:layout_height="wrap_content">

<RelativeLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginBottom="7dp">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="false"
        android:layout_marginTop="5dp">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="80dp"
            android:layout_marginTop="0dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:id="@+id/taskTitle"
                android:text="title"
                android:layout_gravity="left"
                android:textSize="15sp"
                android:textStyle="bold" />

            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:paddingBottom="5sp">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:text="Text"
                    android:id="@+id/textView23" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:id="@+id/taskLocation"
                    android:text="location"
                    android:textSize="12sp"
                    android:layout_marginLeft="3sp" />

            </LinearLayout>

            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:id="@+id/textView22"
                    android:text="Te" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:id="@+id/Tex"
                    android:text="object"
                    android:textSize="12sp"
                    android:layout_marginLeft="3sp" />

            </LinearLayout>

        </LinearLayout>

    </LinearLayout>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tasklistDone"
        android:layout_gravity="right"
        android:layout_centerVertical="true"
        android:layout_marginRight="8dp" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/taskImage"
        android:adjustViewBounds="true"
        android:maxHeight="60dp"
        android:maxWidth="60dp"
        android:minHeight="50dp"
        android:minWidth="50dp"
        android:layout_alignParentLeft="false"
        android:layout_alignParentTop="false"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="10dp"
        android:layout_centerVertical="true" />

    <RelativeLayout
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/triangle">

    </RelativeLayout>

</RelativeLayout>

triange.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item>
    <rotate
        android:fromDegrees="0"
        android:pivotX="45%"
        android:pivotY="45%"
        android:toDegrees="0" >
        <shape android:shape="rectangle" >
            <stroke
                android:width="10dp"
                android:color="@android:color/darker_gray" />

            <solid android:color="@android:color/darker_gray" />
        </shape>
    </rotate>
</item>
<item>
    <rotate
        android:fromDegrees="45"
        android:pivotX="45%"
        android:pivotY="45%"
        android:toDegrees="45" >
        <shape android:shape="rectangle" >
            <stroke
                android:width="10dp"
                android:color="@android:color/white" />

            <solid android:color="@android:color/white" />
        </shape>
    </rotate>
</item>
<item>
    <rotate
        android:fromDegrees="-30"
        android:pivotX="20%"
        android:pivotY="95%"
        android:toDegrees="0" >
        <shape android:shape="rectangle" >
            <stroke
                android:width="10dp"
                android:color="@android:color/white" />

            <solid android:color="@android:color/white" />
        </shape>
    </rotate>
</item>
<item>
    <rotate
        android:fromDegrees="-45"
        android:pivotX="90%"
        android:pivotY="45%"
        android:toDegrees="0" >
        <shape android:shape="rectangle" >
            <stroke
                android:width="10dp"
                android:color="@android:color/white" />

            <solid android:color="@android:color/white" />
        </shape>
    </rotate>
</item>

输出:

enter image description here