在Android中塑造负半径的角

时间:2012-03-22 11:19:24

标签: android android-layout

我想创建一个包含如下角落的复合视图:

inset rounded corner

这在Android中如何实现?

3 个答案:

答案 0 :(得分:1)

如果有人遇到同样的问题,最好的方法是使用9.png drawables。在xml中,这是不可能的。

答案 1 :(得分:0)

您可以通过在自定义 <vector 文件中使用 drawable 来实现这一点,此处为 invert_shape.xml

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

    <path
        android:pathData="M3.146,256.500 L3.146,73.449 C41.770,72.388 72.757,41.041 72.757,2.500 L271.500,2.500 L271.500,256.500 L3.146,256.500 Z"
        android:fillColor="#eeffcc"
        android:strokeColor="#000000"
        android:strokeWidth="5"/>
</vector>

之后,您需要像这样在您的 drawable 中将此 android:background 设置为 LinearLayoutactivity_main.xml

 <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/linear_layout"
        android:background="@drawable/invert_shape"
        android:layout_centerInParent="true"
        android:orientation="horizontal" />

结果:

inverted corner

您可能会问自己如何在您的 android:path 中实现 <vector,为此我使用了一个简单的解决方案。您可以使用 PhotoshopIllustrator 等程序并在 layer 中创建您的形状。如果您已完成此操作,请右键单击您的 layer 并选择“Copy SVG”。现在您复制了形状,将其粘贴到 drawable 中的 invert_shape.xml(此处为 Android Studio)中,您将获得 Photoshop 形状的 android:pathandroid:stroke 等参数.去掉不必要的参数并确保在 XML 本身中使用正确的属性。现在,您的创造力永无止境。干杯! :)

答案 2 :(得分:-1)

你可以给OneSide Corner设置下面的框架作为布局的背景。

    <?xml version="1.0" encoding="UTF-8"?>
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <stroke 
        android:width="1dip" 
        />
    <solid 
        android:color="#3D2A1D"/>
    <corners 
        android:radius="20sp"
        android:topRightRadius="0dp"
        android:bottomLeftRadius="0dp"
        android:bottomRightRadius="0dp"/>

</shape>

我不确定-ve border radio。