安卓:如何在右上角按钮的角落添加一个三角形形状

8
我希望能够在布局的右上角添加一个三角形按钮,如下图所示:enter image description here。目前我已经开始了这个布局,但还没有添加这个三角形。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="48dp"
     android:gravity="center_vertical"
     android:paddingLeft="@dimen/keyline_1"
     android:paddingRight="@dimen/keyline_2">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="@color/grey"
    android:text="DESCRIPTION"/>

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingRight="@dimen/keyline_4"
        android:textColor="@color/grey"
        android:text="info"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/grey"
        android:text="TITLE"/>

</LinearLayout>

</RelativeLayout>
2个回答

8
使用以下代码创建三角形形状并将其设置为TextView的背景:
<?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="0%"
            android:pivotY="1%" >
            <shape android:shape="rectangle" >
                <stroke
                    android:width="10dp"
                    android:color="#00000000" />

                <solid android:color="#00ACED" />
            </shape>
        </rotate>
    </item>
 </layer-list>

使用以下代码旋转TextView:

<TextView
                android:id="@+id/won_text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:paddingTop="20dp"
                android:rotation="-45"
                android:text="@string/won"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="@android:color/white"
                android:textSize="34sp" />

更多详情请参考如何在Android中创建自定义TextView?


请告诉我如果您遇到任何问题。 - Anjali Tripathi
你如何将文本本身添加到内部(即-48%)? - powder366

4
您需要创建一个形状,并将其添加为背景,如下所示:

您需要创建一个shape并将其添加为background,就像这样:

<?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/transparent" android:width="10dp"/>
            <solid
                android:color="@color/your_color_here" />
        </shape>
    </rotate>
</item>

添加一个 TextView,并将此 shape 作为 background,然后将 gravity 改为 end

示例:

android:background:"@drawable/YOUR_SHAPE"

如果你不熟悉形状,可以参考这个答案


Skizo,我不明白如何在我的布局xml中使用你的形状? - anthony
你需要添加一个可绘制的 XML 文件,然后添加 @Skizo 的 XML 代码。你可以在 textview 中使用该文件,例如:<TextView android:background="@drawable/triangle_button"/>。 - B M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接