使用 XML 定义制作三角形?

Posted

技术标签:

【中文标题】使用 XML 定义制作三角形?【英文标题】:Making a triangle shape using XML definitions? 【发布时间】:2011-01-31 20:01:52 【问题描述】:

有没有一种方法可以在 XML 文件中指定三角形?

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="triangle">
  <stroke android: android:color="#FFF" />
  <solid android:color="#FFF" />
</shape>

我们可以用路径形状或其他东西来做到这一点吗?我只需要一个等边三角形。

谢谢

【问题讨论】:

您找到解决方案了吗?我也有同样的问题。 这似乎对编写指南的人(以及一些评论者)有用:Android: Draw Equilateral Triangle Shapes In Canvas 【参考方案1】:

在this post 我描述了如何做到这一点。这是 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/transparent" android:/>
                <solid
                    android:color="@color/your_color_here" />
            </shape>
        </rotate>
    </item>
</layer-list>

如果有不清楚的地方或者您需要解释它是如何构建的,请参阅我的帖子。它旋转了一个剪切矩形 :) 这是非常智能且运行良好的解决方案。

编辑: 创建一个箭头,如 --> 使用:

...
android:fromDegrees="45"
android:toDegrees="45"
android:pivotX="13%"
android:pivotY="-40%" >
...

并创建一个箭头,如

android:fromDegrees="45"
android:toDegrees="45"
android:pivotX="87%"
android:pivotY="140%" >

【讨论】:

对不起.. 但是等边三角形永远不可能是直角三角形。 @JacekMilewski -- 非常感谢!愿意分享下箭头的 pivotX/pivotY 参数是什么?剩下?对吗? 要旋转它,我会在布局 xml 文件中更改旋转,而不是在三角形定义本身中。 -1 。这不好。视图的实际尺寸大于屏幕上显示的尺寸。它应该已经包裹了边界。 您能否分享一下您是如何得出 fromDegrees、toDegrees、pivotX 和 pivotY 的值的?我有一个用例,无法更改布局文件中的旋转。【参考方案2】:
<TextView 
        android:layout_
        android:layout_
        android:text="▼"/>

您可以获得here更多选项。

【讨论】:

你如何把这个值放到 xml 中? 复制这个TextView并粘贴到你的xml中 @user531069:把它放在你的 strings.xml 上:&lt;string name="bottom_arrow"&gt;&amp;#9660;&lt;/string&gt; 我想要链接中的不同箭头,我复制并粘贴

以上是关于使用 XML 定义制作三角形?的主要内容,如果未能解决你的问题,请参考以下文章

android制作自定义布局形状[关闭]

几何画板怎样画半圆

如何使用循环制作一排三角形?

如何使用for循环javascript制作三角形

使用CSS3制作三角形小图标

Swift 4需要帮助才能使用(*)制作三角形