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


#1楼

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

<LinearLayout android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid: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"/><Viewandroid:layout_width="fill_parent"android:layout_height="0.2dp"android:id="@+id/separator"android:visibility="visible"android:background="@android:color/darker_gray"/></LinearLayout>

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


#2楼

我通过扩展textview并手动绘制边框解决了这个问题。 我甚至添加了这样你可以选择边框是虚线还是虚线。

public class BorderedTextView extends TextView {private Paint paint = new Paint();public static final int BORDER_TOP = 0x00000001;public static final int BORDER_RIGHT = 0x00000002;public static final int BORDER_BOTTOM = 0x00000004;public static final int BORDER_LEFT = 0x00000008;private Border[] borders;public BorderedTextView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);init();}public BorderedTextView(Context context, AttributeSet attrs) {super(context, attrs);init();}public BorderedTextView(Context context) {super(context);init();}private void init(){paint.setStyle(Paint.Style.STROKE);paint.setColor(Color.BLACK);paint.setStrokeWidth(4);        }@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);if(borders == null) return;for(Border border : borders){paint.setColor(border.getColor());paint.setStrokeWidth(border.getWidth());if(border.getStyle() == BORDER_TOP){canvas.drawLine(0, 0, getWidth(), 0, paint);                } elseif(border.getStyle() == BORDER_RIGHT){canvas.drawLine(getWidth(), 0, getWidth(), getHeight(), paint);} elseif(border.getStyle() == BORDER_BOTTOM){canvas.drawLine(0, getHeight(), getWidth(), getHeight(), paint);} elseif(border.getStyle() == BORDER_LEFT){canvas.drawLine(0, 0, 0, getHeight(), paint);}}}public Border[] getBorders() {return borders;}public void setBorders(Border[] borders) {this.borders = borders;}
}

边境班:

public class Border {private int orientation;private int width;private int color = Color.BLACK;private int style;public int getWidth() {return width;}public void setWidth(int width) {this.width = width;}public int getColor() {return color;}public void setColor(int color) {this.color = color;}public int getStyle() {return style;}public void setStyle(int style) {this.style = style;}public int getOrientation() {return orientation;}public void setOrientation(int orientation) {this.orientation = orientation;}public Border(int Style) {this.style = Style;}
}

希望这有助于某人:)


#3楼

检查下面的链接以制作圆角http://androidcookbook.com/Recipe.seam?recipeId=2318

Android项目中res下的drawable文件夹不限于位图(PNG或JPG文件),但它也可以保存XML文件中定义的形状。

然后可以在项目中重用这些形状。 形状可用于在布局周围放置边框。 此示例显示了带有弯角的矩形边框。 在drawable文件夹中创建一个名为customborder.xml的新文件(在Eclipse中使用File菜单并选择New then File,在文件名中选择drawable文件夹,然后单击Finish)。

输入定义边框形状的XML:

<?xml version="1.0" encoding="UTF-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"><corners android:radius="20dp"/><padding android:left="10dp" android:right="10dp" android:top="10dp" android:bottom="10dp"/><solid android:color="#CCCCCC"/>
</shape>

android:shape属性设置为矩形(形状文件也支持椭圆,直线和圆环)。 Rectangle是默认值,因此如果它是一个定义的矩形,则可以省略该属性。 有关形状文件的详细信息,请参阅http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape上有关形状的Android文档。

元素角将矩形角设置为圆角。 可以在每个角上设置不同的半径(请参阅Android参考)。

填充属性用于移动应用了形状的视图的内容,以防止内容与边框重叠。

此处的边框颜色设置为浅灰色(CCCCCC十六进制RGB值)。

形状也支持渐变,但这里没有使用。 再次,请参阅Android资源以查看如何定义渐变。 使用android:background="@drawable/customborder"将形状应用于android:background="@drawable/customborder"

在布局中,可以正常添加其他视图。 在此示例中,添加了单个TextView,文本为白色(FFFFFF十六进制RGB)。 背景设置为蓝色,加上一些透明度以降低亮度(A00000FF十六进制alpha RGB值)。 最后,布局通过将其放入具有少量填充的另一布局来偏离屏幕边缘。 因此,完整的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"android:padding="5dp"><LinearLayout android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="@drawable/customborder"><TextView android:layout_width="fill_parent"android:layout_height="fill_parent"android:text="Text View"android:textSize="20dp"android:textColor="#FFFFFF"android:gravity="center_horizontal"android:background="#A00000FF" /></LinearLayout>
</LinearLayout>

#4楼

您可以在代码中添加以下内容:

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

#5楼

这可能对你有所帮助。

<RelativeLayoutandroid:id="@+id/textbox"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:background="@android:color/darker_gray" ><TextViewandroid:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:layout_margin="3dp"android:background="@android:color/white"android:gravity="center"android:text="@string/app_name"android:textSize="20dp" /></RelativeLayout

#6楼

实际上,它非常简单。 如果你想在Textview后面有一个简单的黑色矩形,只需在TextView标签中添加android:background="@android:color/black" 。 像这样:

<TextViewandroid:textSize="15pt" android:textColor="#ffa7ff04"android:layout_alignBottom="@+id/webView1"android:layout_alignParentRight="true"android:layout_alignParentEnd="true"android:background="@android:color/black"/>

#7楼

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

使用可绘制的形状

将以下内容保存为drawable文件夹中的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 --><solidandroid:color="@color/background_color" ></solid><!-- View border color and width --><strokeandroid:width="1dp"android:color="@color/border_color" ></stroke><!-- The radius makes the corners rounded --><cornersandroid:radius="2dp"   ></corners></shape>

然后将其设置为TextView的背景:

<TextViewandroid: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中将其设置为背景。

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

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

  • 画9补丁
  • 简单的九补丁生成器
  • 适用于Android UI的9-patch的简单指南
  • 在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选择器中创建底部边框?
  • 在3个方面在drawable xml的android视图上创建边框?

使用9补丁

您可以使用单个边框制作9补丁图像。 其他一切与上面讨论的相同。

使用视图

这是一种技巧,但如果您需要在两个视图之间添加分隔符或者将边框添加到单个TextView,它会很有效。

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/textview1"android:layout_width="match_parent"android:layout_height="wrap_content" /><!-- This adds a border between the TextViews --><Viewandroid:layout_width="match_parent"android:layout_height="2dp"android:background="@android:color/black" /><TextViewandroid:id="@+id/textview2"android:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout>

这里有一些更多的链接:

  • 如何在Android中画一条线
  • 如何在活动中编辑文本之间放置水平除数线
  • 如何在相对布局中在图像视图上方添加水平1px线?

#8楼

我有办法非常简单地完成它,我想分享它。

当我想对mi TextViews进行平方时,我只是将它们放在LinearLayout中。 我设置了LinearLayout的背景颜色,并为TextView添加了一个边距。 结果就像你对TextView进行平方。


#9楼

这是我的'简单'辅助类,它返回带边框的ImageView。 只需将它放在您的utils文件夹中,然后像这样调用它:

ImageView selectionBorder = BorderDrawer.generateBorderImageView(context, borderWidth, borderHeight, thickness, Color.Blue);

这是代码。

/*** Because creating a border is Rocket Science in Android.*/
public class BorderDrawer
{public static ImageView generateBorderImageView(Context context, int borderWidth, int borderHeight, int borderThickness, int color){ImageView mask = new ImageView(context);// Create the square to serve as the maskBitmap squareMask = Bitmap.createBitmap(borderWidth - (borderThickness*2), borderHeight - (borderThickness*2), Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(squareMask);Paint paint = new Paint();paint.setStyle(Paint.Style.FILL);paint.setColor(color);canvas.drawRect(0.0f, 0.0f, (float)borderWidth, (float)borderHeight, paint);// Create the darkness bitmapBitmap solidColor = Bitmap.createBitmap(borderWidth, borderHeight, Bitmap.Config.ARGB_8888);canvas = new Canvas(solidColor);paint.setStyle(Paint.Style.FILL);paint.setColor(color);canvas.drawRect(0.0f, 0.0f, borderWidth, borderHeight, paint);// Create the masked version of the darknessViewBitmap borderBitmap = Bitmap.createBitmap(borderWidth, borderHeight, Bitmap.Config.ARGB_8888);canvas = new Canvas(borderBitmap);Paint clearPaint = new Paint();clearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));canvas.drawBitmap(solidColor, 0, 0, null);canvas.drawBitmap(squareMask, borderThickness, borderThickness, clearPaint);clearPaint.setXfermode(null);ImageView borderView = new ImageView(context);borderView.setImageBitmap(borderBitmap);return borderView;}
}

#10楼

您可以通过两种方法设置边框。 一个是可绘制的,第二个是程序化的。

使用Drawable

<shape><solid android:color="@color/txt_white"/><stroke android:width="1dip" android:color="@color/border_gray"/><corners android:bottomLeftRadius="10dp"android:bottomRightRadius="0dp"android:topLeftRadius="10dp"android:topRightRadius="0dp"/><padding android:bottom="0dip"android:left="0dip"android:right="0dip"android:top="0dip"/>
</shape>

编程


public static GradientDrawable backgroundWithoutBorder(int color) {GradientDrawable gdDefault = new GradientDrawable();gdDefault.setColor(color);gdDefault.setCornerRadii(new float[] { radius, radius, 0, 0, 0, 0,radius, radius });return gdDefault;
}

#11楼

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

<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


#12楼

我只是在看一个类似的答案 - 它可以通过一个笔画和以下覆盖来完成:

@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {Paint strokePaint = new Paint();
strokePaint.setARGB(255, 0, 0, 0);
strokePaint.setTextAlign(Paint.Align.CENTER);
strokePaint.setTextSize(16);
strokePaint.setTypeface(Typeface.DEFAULT_BOLD);
strokePaint.setStyle(Paint.Style.STROKE);
strokePaint.setStrokeWidth(2);Paint textPaint = new Paint();
textPaint.setARGB(255, 255, 255, 255);
textPaint.setTextAlign(Paint.Align.CENTER);
textPaint.setTextSize(16);
textPaint.setTypeface(Typeface.DEFAULT_BOLD);canvas.drawText("Some Text", 100, 100, strokePaint);
canvas.drawText("Some Text", 100, 100, textPaint);super.draw(canvas, mapView, shadow);
}

#13楼

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


#14楼

我找到的最简单的解决方案(实际上有效):

<TextView...android:background="@android:drawable/editbox_background" />

#15楼

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

<?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),targetSdkVersion 26,实现'com.android.support:appcompat-v7:26.1.0',gradle:4.1


#16楼

试试这个:

<shape><solid android:color="@color/txt_white"/><stroke android:width="1dip" android:color="@color/border_black"/>
</shape>

#17楼

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

textview_bg.xml将在Drawables下,可以是这样的。 你可以有一个solidgradient背景(或什么,如果不是必需的), corners添加圆角半径和stroke添加边框。

textview_bg.xml

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><cornersandroid:radius="@dimen/dp_10"/><gradientandroid:angle="225"android:endColor="#FFFFFF"android:startColor="#E0E0E0" /><strokeandroid:width="2dp"android:color="#000000"/></shape>

#18楼

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

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

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

如何在Android文本视图周围添加边框?相关推荐

  1. android gridview item 边框,Android实现为GridView添加边框效果

    为GridView添加边框效果,供大家参考,具体内容如下 1.自定义GridView的item样式: grid_item.xml文件 android:layout_width="wrap_c ...

  2. android 添加子view,如何在Android中向ImageView添加子视图

    正如pskink所说,你只能以编程方式将视图添加到 ViewGroup.您可以添加到LinearLayout,例如: LinearLayout layout = (LinearLayout)findV ...

  3. 如何在Android主屏幕上添加热点快捷方式

    Portable Wi-Fi hotspots on your Android phone are great, because hotel Wi-Fi usually isn't, but togg ...

  4. java表格中添加按钮_如何在JavaFX表视图中添加按钮

    我已经在谷歌和Stackoverflow上搜索了这个,我只是没有得到给定的例子 . 有人可以向我解释一下 . 我想在表视图的最后一列添加一个按钮,当它被单击时,它应该触发一个监听器并传递按钮行的对象 ...

  5. gmail附件调用_如何在Android版Gmail中添加附件

    gmail附件调用 If you don't use email as part of your day to day life, it can easily be one of those thin ...

  6. android 层级边框,有没有一种简单的方法可以在Android视图的顶部和底部添加边框?...

    有没有一种简单的方法可以在Android视图的顶部和底部添加边框? 我有一个TextView,我想沿其顶部和底部边框添加黑色边框. 我尝试将android:drawableTop和android:dr ...

  7. poi 合并单元格添加边框_如何在Excel中的文本和单元格边框之间添加空间

    poi 合并单元格添加边框 Adding a bit of extra padding to your cell boundaries can make it easier for you to re ...

  8. android 文本后图标_如何在Android中更改文本,图标等的大小

    android 文本后图标 Let's face it: no matter how good the screens are on our phones and tablets, the text ...

  9. android给textview添加边框,Android:在textview周围添加边框

    如何使用xml布局在图片所示的文字周围添加边框 我尝试将边框添加到布局中,但与文本重叠. 您可以使用形状可绘制 将textviews背景设置为白色,然后将其放在框上方 能否请您详细说明一下,我必须在该 ...

最新文章

  1. mysql 异步api_Hiredis异步API
  2. android 9 pie公司,谷歌Android 9 Pie,真正的安卓派
  3. 微博 用户画像_微博/抖音/快手/小红书/B站内容营销和粉丝画像研究
  4. 阿里云使用教程(试用一个月)
  5. 构建openjdk镜像_在Windows上构建OpenJDK
  6. devops java使用_谁会在使用DevOps时最大程度地退缩?
  7. java双缓冲绘图_Java双缓冲技术-绘图应用
  8. loadrunner录制时web时,安全证书问题
  9. vc++之剪贴板通信实例
  10. VALSE2019总结(4)-主题报告
  11. mysql 在线优化工具_MySQL SQL查询优化工具EverSQL
  12. java sts安装步骤_如何安装STS
  13. 误删除文件恢复工具免费下载
  14. iMeta观点 | 短读长扩增子测序是否适用于微生物组功能的预测?
  15. 巴马冷泉、巴马水到底是个什么?有市场吗?
  16. linux图片裁剪软件安卓版,照片裁剪软件下载-照片裁剪 安卓版v2.2-PC6安卓网
  17. 传奇脚本显示服务器开区时间代码,GOM引擎该地图只限新区开放方法,传奇开区时设置老区不能进脚本...
  18. 《天龙八部》地形研究
  19. 实验三 16位机指令系统实验报告
  20. 通达信l-2服务器文件,分享两个手机版通达信的指标源码(PC端也适用)

热门文章

  1. linux on power 开源技术的新选择
  2. 堆栈的使用(部分学习)
  3. EA 反向工程 导入oracle中表结构
  4. 菊子曰测试草稿{29C28FD771BA4B0D8693}
  5. Ajax.Responders
  6. Python 命令行之旅:深入 argparse(二)
  7. 关于VS2005安装项目制作的三个参考文章链接
  8. 如何在Linux下用C/C++语言操作数据库sqlite3(很不错!设计编译链接等很多问题!)...
  9. 现代软件工程 第3-6章 作业
  10. 超实用!SKETCH大师最常用的3个实战小技巧