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


当前回答

使用材质组件库,可以使用MaterialShapeDrawable。

    <TextView
        android:id="@+id/textview"
        .../>

然后可以通过编程方式应用MaterialShapeDrawable:

    TextView textView = findViewById(R.id.textview);
    MaterialShapeDrawable shapeDrawable = new MaterialShapeDrawable();
    shapeDrawable.setFillColor(ContextCompat.getColorStateList(this,android.R.color.transparent));
    shapeDrawable.setStroke(1.0f, ContextCompat.getColor(this,R.color....));
    ViewCompat.setBackground(textView,shapeDrawable);

其他回答

更改康斯坦丁·布罗夫的答案,因为在我的情况下不起作用:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@android:color/white" />
            <stroke android:width="2dip" android:color="#4fa5d5"/>
            <corners android:radius="7dp"/>
        </shape>
    </item>
</selector>

compileSdkVersion 26(Android 8.0),minSdkVersion 21(Android 5.0),targetSdkV版本26,实现“com.android.support:appcompat-v7:26.1.0”,等级:4.1

我找到了一种更好的方法来在TextView周围添加边框。

使用九块图像作为背景。它非常简单,SDK附带了一个制作9补丁图像的工具,而且它绝对不需要编码。

链接是http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-补丁。

创建一个边框视图,背景颜色作为边框的颜色和文本视图的大小。将边框视图填充设置为边框的宽度。将文本视图背景色设置为文本视图所需的颜色。现在在边框视图中添加文本视图。

有很多方法可以向textView添加边框。最简单的方法是创建一个自定义的可绘制文件,并将其设置为android:background=“@drawable/textview_bg”用于textview。

textview_bg.xml将位于Drawables下,可以是这样的。您可以有一个实心或渐变背景(如果不需要的话,也可以没有背景)、添加角半径的角和添加边框的笔划。

textview_bg.xml

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

        <corners
            android:radius="@dimen/dp_10"/>

        <gradient
            android:angle="225"
            android:endColor="#FFFFFF"
            android:startColor="#E0E0E0" />

        <stroke
            android:width="2dp"
            android:color="#000000"/>

    </shape>
  <View
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="@android:color/black" />

这段代码足够你可以放在任何地方