协慌网

登录 贡献 社区

如何在 Android textview 周围放置边框?

是否可以在 textview 周围绘制边框?

答案

您可以将可绘制的形状(矩形)设置为视图的背景。

<TextView android:text="Some text" android:background="@drawable/back"/>

和矩形 drawable back.xml(放入 res / drawable 文件夹):

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
   <solid android:color="@android:color/white" />
   <stroke android:width="1dip" android:color="#4fa5d5"/>
</shape>

您可以使用@android:color/transparent来使纯色具有透明背景。您还可以使用填充将文本与边框分开。有关更多信息,请参见: http://developer.android.com/guide/topics/resources/drawable-resource.html

让我总结一些不同的(非编程)方法。

使用可绘制形状

将以下内容另存为 XML 文件到您的可绘制文件夹中(例如,my_border.xml):

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

    <!-- View background color -->
    <solid
        android:color="@color/background_color" >
    </solid>

    <!-- View border color and width -->
    <stroke
        android:width="1dp"
        android:color="@color/border_color" >
    </stroke>

    <!-- The radius makes the corners rounded -->
    <corners
        android:radius="2dp"   >
    </corners>

</shape>

然后只需将其设置为 TextView 的背景即可:

<TextView
    android:id="@+id/textview1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/my_border" />

更多帮助:

使用 9 补丁

9 色块是可拉伸的背景图像。如果您制作带有边框的图像,那么它将为您的 TextView 提供边框。您所需要做的就是制作图像,然后将其设置为 TextView 中的背景。

<TextView
    android:id="@+id/textview1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/my_ninepatch_image" />

以下是一些链接,这些链接将显示如何制作 9 个补丁的图像:

如果我只想要顶部边框怎么办?

使用图层列表

您可以使用图层列表将两个矩形相互堆叠。通过使第二个矩形略小于第一个矩形,可以制作边框效果。第一个(下部)矩形是边框颜色,第二个矩形是背景颜色。

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

    <!-- Lower rectangle (border color) -->
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/border_color" />
        </shape>
    </item>

    <!-- Upper rectangle (background color) -->
    <item android:top="2dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/background_color" />
        </shape>
    </item>
</layer-list>

设置android:top="2dp"会使顶部偏移 2dp(使其变小)。这允许第一个(下部)矩形显示出来,从而产生边框效果。您可以将其应用于 TextView 背景,方法与上述可绘制shape

以下是有关图层列表的更多链接:

使用 9 补丁

您可以只制作一个带有单个边框的 9 色块图像。其他所有内容都与上面讨论的相同。

使用视图

这是一种技巧,但是如果您需要在两个视图之间或单个 TextView 的边框之间添加分隔符,则效果很好。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textview1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <!-- This adds a border between the TextViews -->
    <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="@android:color/black" />

    <TextView
        android:id="@+id/textview2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

这里有一些更多的链接:

简单的方法是为 TextView 添加一个视图。下边界线示例:

<LinearLayout android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:text="@string/title"
        android:id="@+id/title_label"
        android:gravity="center_vertical"/>
    <View
        android:layout_width="fill_parent"
        android:layout_height="0.2dp"
        android:id="@+id/separator"
        android:visibility="visible"
        android:background="@android:color/darker_gray"/>

</LinearLayout>

对于其他方向的边界,请调整分隔符视图的位置。