我如何在Android textview中添加边框?

是否有可能在textview上绘制边框?


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

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

和矩形可绘制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" />

更多帮助:

  • Shape Drawable(Android文档)
  • Android开发人员提示和技巧:XML Drawables(第一部分)
  • 使用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幅图像:

  • 绘制9个补丁
  • 简单的九修补程序生成器
  • 针对Android用户界面的9补丁简单指南
  • 在Android中创建和使用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相同。

    以下是一些关于图层列表的更多链接:

  • 了解Android的<layer-list>
  • 如何在可绘制形状的XML选择器中创建底部边框?
  • 在可绘制的xml中,在三面的android视图上创建边框?
  • 使用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>
    

    这里有一些更多的链接:

  • 如何在Android中绘制线条
  • 如何在编辑文本之间放置一个水平的因子线
  • 如何在相对布局中在图像视图上添加水平1px行?

  • 简单的方法是为您的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>
    

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

    链接地址: http://www.djcxy.com/p/36581.html

    上一篇: How do I put a border around an Android textview?

    下一篇: Making TextView scrollable on Android