1

我在视图周围添加了一个完整的边框,但我只需要添加一个角,如下图所示:

在此处输入图像描述

我的意思是只有红色的角落。

我试图调整下面的边框 xml ,但没有奏效:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="rectangle">
    <stroke android:width="10dp" android:height="10dp" android:color="#B22222" /> 
    <solid android:color="#FCE6C9" /> 
    <corners android:radius="20dp"  /> 
</shape>

任何帮助将不胜感激

4

2 回答 2

2

我认为使用 a 不可能做到这一点ShapeDrawable,因为它需要您在可绘制对象本身上使用某种边距或填充。实际上有一个padding属性,但不幸的是,它只对 的内容有影响View,而不是可绘制对象本身。

话虽如此,一个简单的解决方案是创建一个 9-patch 并将其作为背景应用到TextView. 仅用于演示目的:使 9-patch 看起来像这样:

红色圆角 9-patch 示例


编辑: 再想一想,实际上还有另一个选项依赖于使用 aLayerDrawable来创建所需的效果。创建有点乏味,我怀疑它会比使用 9-patch 更有效,但至少你不必渲染图像,这意味着如果你需要改变颜色,更直接。

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

    <item android:drawable="@drawable/rounded" />
    <item android:drawable="@android:color/white" android:left="30dp"
        android:right="30dp" />
    <item android:bottom="30dp" android:drawable="@android:color/white"
        android:top="30dp" />
    <item android:bottom="30dp" android:left="10dp" android:right="10dp"
        android:drawable="@color/pink" android:top="30dp" />
    <item android:bottom="10dp" android:left="30dp" android:right="30dp"
        android:drawable="@color/pink" android:top="10dp" />

</layer-list>

一些细节:@drawable/rounded是您自己发布的代码片段。以下两项只是带有偏移的白色矩形,用于创建白色边缘。现在,由于这些也会覆盖粉红色的表面,我们需要另外两个粉红色的矩形(同样具有特定的偏移量)来解决这个问题。结果是一个看起来与您在问题中显示的完全一样的背景。

请注意,您可能想看看是否可以对此进行一些优化。至少我建议不要硬编码偏移量(就像我为简单起见所做的那样),而是将它们存储在一个文件中,这样您就可以通过从和dimens.xml引用它们来保持这些值集中和一致。ShapeDrawableLayerDrawable

附录:android:drawable在 ICS 之前(或者可能是 Honeycomb 之前)设备上,使用属性直接引用颜色似乎存在问题。但是,您可以通过设置另一个可绘制对象(无论是 9-patch 还是ShapeDrawable)来表示这种颜色,从而轻松解决这个问题。例如,在上面的代码片段中,您可以替换android:drawable="@color/pink"android:drawable="@drawable/color_pink",其中color_pink可以简单地是一个包含以下内容的 xml 文件:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="rectangle">
    <solid android:color="#FCE6C9" /> 
</shape>

显然,您需要对LayerDrawable. 在姜饼 2.3.7 上测试。

于 2012-05-20T01:44:18.237 回答
0

我将创建一个 9-patch 文件并将其设置为主容器的背景。这样做的步骤是。

  1. 您可以在烟花、插画或任何您喜欢的图像编辑软件中大致创建您想要的背景。
  2. 然后裁剪图稿,使图稿周围只有 1 个像素的边框。将其保存为png。
  3. 打开电脑 C:\Program Files (x86)\Android\android-sdk\tools 上 android sdk 文件夹中的 draw9patch.bat 文件。
  4. 打开你的png文件。然后,您可以使用鼠标单击外部 1 像素边框,这会将单击的像素变为黑色。在顶部和底部或左右两侧都有黑色像素的区域将是被拉伸的区域。在您的情况下,您只想让没有红色拉伸的中间区域。
  5. 我个人的偏好是只打开上面的文件并将其保存为 9 补丁文件。然后在我的照片编辑软件中打开它,以与上述相同的方式创建一条 1 像素粗的线。它更快更精确。
  6. 最后将文件添加到您的可绘制文件夹中。然后将主视图容器的背景设置为可绘制对象。

应该是这样的。希望有帮助。

于 2012-05-20T01:59:26.657 回答