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

我有一个TextView,我想沿其顶部和底部边框添加黑色边框。 我尝试将android:drawableTop和android:drawableBottom添加到TextView,但这只会导致整个视图变黑。

android:background="@android:color/green"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:drawableTop="@android:color/black"

android:drawableBottom="@android:color/black"

android:text="la la la" />

有没有办法轻松地在Android中的视图(特别是TextView)中添加顶部和底部边框?

22个解决方案

385 votes

在android 2.2中你可以做到以下几点。

创建一个xml drawable,例如/res/drawable/textlines.xml,并将其指定为TextView的background属性。

android:text="My text with lines above and below"

android:background="@drawable/textlines"

/>

/res/drawable/textlines.xml

android:shape="rectangle">

android:shape="rectangle">

这方面的缺点是你必须指定不透明的背景颜色,因为透明胶片不起作用。 (至少我以为他们做了,但我错了)。 在上面的示例中,您可以看到第一个形状#FFdddddd的纯色以第二个形状描边颜色复制。

Emile answered 2019-01-26T04:20:12Z

251 votes

我使用了一个技巧,以便边框显示在容器外面。 使用此技巧只会绘制一条线,因此将显示底层视图的背景。

android:bottom="1dp"

android:left="-2dp"

android:right="-2dp"

android:top="-2dp">

android:width="1dp"

android:color="#FF000000" />

android:right="10dp"

android:top="10dp"

android:bottom="10dp" />

user1051892 answered 2019-01-26T04:20:34Z

94 votes

选项1:形状可绘制

如果您想在布局或视图周围设置边框,则可以设置背景,这是最简单的选项。 在LinearLayout文件夹中创建一个类似于以下内容的XML文件:

android:shape="rectangle" >

android:width="1px"

android:color="#000" />

如果您不想填写,可以删除LinearLayout。 在布局/视图上设置View。

选项2:背景视图

这是我在LinearLayout中使用过的一个小技巧。基本上你在视图下面有一个黑色正方形你想要一个边框,然后给那个视图一些填充(不是边缘!)所以黑色正方形显示在边缘。

显然,如果视图没有任何透明区域,这只能正常工作。 如果是这样,我建议你写一个自定义LinearLayout只绘制边框 - 它应该只有几十行代码。

android:id="@+id/border"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBottom="@+id/image"

android:layout_alignLeft="@+id/image"

android:layout_alignRight="@+id/image"

android:layout_alignTop="@+id/main_image"

android:background="#000" />

android:id="@+id/image"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_...

android:padding="1px"

android:src="@drawable/..." />

如果你想知道,它确实可以使用LinearLayout.但是,如果你想在整个View中有一个背景它不起作用,因为有一个错误阻止你填充RelativeLayout与View.在这种情况下我 'd推荐Shape drawable。

选项3:9补丁

最后一个选择是使用像这样的9-patch drawable:

您可以在任何可以设置LinearLayout的视图上使用它。是的它确实需要6x6 - 我尝试了5x5但它不起作用。

这种方法的缺点是你不能很容易地改变颜色,但是如果你想要花哨的边框(例如只有顶部和底部的边框,就像这个问题那样)那么你可能无法用LinearLayout做到这一点。 drawable,这不是很强大。

选项4:额外的观点

如果您只想在视图的上方和下方设置边框,我忘了提及这个非常简单的选项。 你可以把你的视图放在一个垂直LinearLayout(如果它还没有),然后在它上面和下面添加空Views,如下所示:

Timmmm answered 2019-01-26T04:22:20Z

72 votes

要仅在底部添加1dp白色边框并具有透明背景,您可以使用以下内容,这比此处的大多数答案更简单。

对于solid或其他视图添加:

android:background="@drawable/borderbottom"

并在solid目录中添加以下XML,名为android:bottom="-2dp"

如果您想在顶部设置边框,请将solid更改为android:bottom="-2dp"

颜色不需要是白色,背景也不需要是透明的。

可能不需要solid元素。 这将取决于您的设计(感谢V. Kalyuzhnyu)。

基本上,此XML将使用矩形形状创建边框,但随后将顶部,右侧和左侧推到形状的渲染区域之外。 这样只留下底部边框。

Tigger answered 2019-01-26T04:23:23Z

35 votes

所以我想做一些稍微不同的事情:仅在底部的边框,以模拟ListView分隔符。 我修改了Piet Delport的答案并得到了这个:

android:shape="rectangle">

android:left="-2dp"

android:right="-2dp"

android:bottom="1px">

android:shape="rectangle">

注意使用px代替dp来获得精确的1像素分频器(某些手机DPI会使1dp线消失)。

phreakhead answered 2019-01-26T04:23:52Z

33 votes

目前接受的答案不起作用。 由于抗锯齿,它会在视图的左侧和右侧创建细垂直边框。

这个版本很完美。 它还允许您独立设置边框宽度,如果需要,还可以在左/右侧添加边框。 唯一的缺点是它不支持透明度。

使用下面的代码创建一个名为/res/drawable/top_bottom_borders.xml的xml drawable,并将其指定为TextView的background属性。

android:bottom="1dp"

android:top="1dp">

通过Marshmallow在Android KitKat上测试

gregschlom answered 2019-01-26T04:24:34Z

8 votes

正如@Nic Hubbard所说,有一种非常简单的方法来添加边界线。

android:layout_width="match_parent"

android:layout_height="2dp"

android:background="#000000" >

您可以将高度和背景颜色更改为您想要的任何颜色。

MattZ answered 2019-01-26T04:25:03Z

7 votes

您还可以将视图包装在FrameLayout中,然后将框架的背景颜色和填充设置为您想要的内容; 但是,默认情况下,textview具有“透明”背景,因此您还需要更改textview的背景颜色。

okaram answered 2019-01-26T04:25:26Z

7 votes

我的答案是基于@Emile版本,但我使用透明色而不是实色。

此示例将绘制一个2dp底部边框。

android:color="#50C0E9" />

android:color="@color/bgcolor" />

@ color / bgcolor是您用边框绘制视图时背景的颜色。

如果要更改边框的位置,请使用以下方法之一更改偏移:

android:bottom="2dp"

android:top="2dp"

android:right="2dp"

android:left="2dp"

或将它们组合成2个或更多边框:

android:bottom="2dp" android:top="2dp"

vovahost answered 2019-01-26T04:26:15Z

5 votes

为什么不创建一个背景色的1dp高视图? 然后它可以轻松放置在您想要的位置。

Nic Hubbard answered 2019-01-26T04:26:37Z

4 votes

首先制作一个包含如下所示内容的xml文件,并将其命名为border.xml,并将其放在res目录中的layout文件夹中

android:bottom="1dp" />

之后在代码内部使用

TextView tv = (TextView)findElementById(R.id.yourTextView);

tv.setBackgroundResource(R.layout.border);

这将在TextView的顶部和底部形成一条黑线。

Nikhil Dinesh answered 2019-01-26T04:27:13Z

4 votes

要改变这个:

android:text="My text"

android:background="@drawable/top_bottom_border"/>

我更喜欢“drawable / top_bottom_border.xml”中的这种方法:

android:angle="270"

android:startColor="#000"

android:centerColor="@android:color/transparent"

android:centerX="0.01" />

android:angle="90"

android:startColor="#000"

android:centerColor="@android:color/transparent"

android:centerX="0.01" />

这只会产生边框,而不是在背景有颜色时会出现的矩形。

Dinidiniz answered 2019-01-26T04:27:48Z

3 votes

只是将我的解决方案添加到列表中..

我想要一个半透明的底部边框,它延伸超过原始形状(因此半透明边框位于父矩形之外)。

哪个给了我;

Cadab answered 2019-01-26T04:28:23Z

3 votes

记下下面的代码

android:layout_width="wrap_content"

android:layout_height="2dip"

android:layout_below="@+id/topics_text"

android:layout_marginTop="7dp"

android:layout_margin="10dp"

android:background="#ffffff" />

Abhi answered 2019-01-26T04:28:45Z

1 votes

尝试使用线性布局包装图像,并将其背景设置为文本周围所需的边框颜色。 然后将textview上的填充设置为边框所需的厚度。

Matt answered 2019-01-26T04:29:08Z

1 votes

您还可以使用9路径来完成工作。 创建它,使彩色像素的高度不会增加,而只会增加透明像素。

Kowlown answered 2019-01-26T04:29:30Z

0 votes

// Just simply add border around the image view or view

android:id="@+id/imageView2"

android:layout_width="90dp"

android:layout_height="70dp"

android:layout_centerVertical="true"

android:layout_marginRight="10dp"

android:layout_toLeftOf="@+id/imageView1"

android:background="@android:color/white"

android:padding="5dip" />

// After that dynamically put color into your view or image view object

objView.setBackgroundColor(Color.GREEN);

//VinodJ/Abhishek

Vinod Joshi answered 2019-01-26T04:29:46Z

0 votes

android:width="1dip"

android:color="@color/light_grey1" />

android:bottomLeftRadius="0dp"

android:bottomRightRadius="0dp"

android:topLeftRadius="5dp"

android:topRightRadius="5dp" />

Vinoj Vetha answered 2019-01-26T04:30:01Z

0 votes

使用InsetDrawable添加边框以插入边框的最简单方法,以下仅显示顶部边框:

android:insetBottom="-2dp"

android:insetLeft="-2dp"

android:insetRight="-2dp">

android:width=".5dp"

android:color="@color/dark_gray" />

Zaid Mirza answered 2019-01-26T04:30:23Z

0 votes

这是实现它的一种方法。

android:width="1dp"

android:color="@color/grey_coaching_text" />

android:bottom="1dp"

android:top="1dp">

第一项为中风,第二项为实心背景。 隐藏左右边界。

Kavya Shravan answered 2019-01-26T04:30:53Z

-1 votes

android:id="@+id/textView3"

android:layout_width="match_parent"

android:layout_height="2dp"

android:background="#72cdf4"

android:text=" aa" />

只需在要添加边框的文本下方添加此TextView

Aquib Maniyar answered 2019-01-26T04:31:15Z

-1 votes

只是为了强制执行@phreakhead和user1051892的答案,如果为负,则必须大于.如果没有,则项目的绘画将与笔画混合,您可能认为这些值不起作用。

user3810036 answered 2019-01-26T04:31:37Z

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

  1. 有没有一种简单的方法可以按值删除列表元素?

    a = [1, 2, 3, 4] b = a.index(6)del a[b] print a 上面显示了以下错误: Traceback (most recent call last):File &q ...

  2. 一百种简单整人方法_一种非常简单的用户故事方法

    一百种简单整人方法 User stories are a great way to plan development work. In theory. But how do you avoid get ...

  3. android改变下拉框字体颜色,有没有简单的方法来改变Android中的Spinner下拉颜色?...

    我创建我的主题以与应用程序一起使用,主题的父级是Theme.AppCompat.Light.NoActionBar 顺便说一句,我想要白色背景和黑色文字. 这是适配器代码 val adapter = ...

  4. java按两列输出_有没有一种简单的方法可以将两列输出到Java中的控制台? - java...

    如标题所述,是否有一种简单的方法可以将两列输出到Java中的控制台? 我知道\t,但是在使用printf时,我还没有找到基于特定列进行空间分配的方法. 参考方案 使用宽度和精度说明符,将其设置为相同的 ...

  5. 上微信怎么同时用计算机,电脑端微信双开,教你两种简单的方法,上手即用!...

    原标题:电脑端微信双开,教你两种简单的方法,上手即用! 微信现在已不单单是社交软件了,如今已成了工作必备软件,每天上班微信电脑端一登,传个文件,发个群通知,实在方便. 但是很多人都不止有一个微信号,电 ...

  6. 电脑端微信双开,教你两种简单的方法,上手即用!

    电脑端微信双开,教你两种简单的方法,上手即用! https://kuaibao.qq.com/s/20181117A0GAZF00?refer=spider 微信现在已不单单是社交软件了,如今已成了工 ...

  7. 9种简单的方法来使用社交媒体SEO

    9种简单的方法来使用社交媒体SEO 搜索引擎优化和社交媒体营销是两种策略,可以帮助提升品牌知名度并推广您的业务.他们创造吸引人的身份,自然吸引游客. 由于社交媒体主要依靠高质量的内容和强大的可见品牌存 ...

  8. python 加一个月 日期,有没有一种简单的方法可以在Python中将datetime对象增加一个月?...

    本问题已经有最佳答案,请猛点这里访问. 所以我试图找到一种方法,将日期时间对象增加一个月.然而,根据这个问题,这似乎不是那么简单. 我希望有这样的事情: import datetime as dt n ...

  9. 一种简单快速的方式实现 Android App 的夜间模式

    博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载.本文由博主 威威喵 原创,请多支持与指教. 本文首发于此   博主:威威喵  |  博客主页:https://blog.csdn.net/ ...

最新文章

  1. fastreport.net 交叉表居中显示_浅析Sql中内连接、外连接、全连接、交叉连接的区别...
  2. 运维中心建设--数据管理
  3. 打印机共享无法正常打印的处理思路
  4. centos7 install virt-sysprep
  5. Java-Runtime
  6. HDOJ 4302 Holedox Eating (multiset || 线段树)
  7. 计蒜客——学生成绩查找系统
  8. .Net之美读书笔记15
  9. 正则方程手写(初步实现)
  10. 通过exe解决kindle for pc中文书籍无法修改字体的问题
  11. Python机器学习之决策树(使用西瓜数据集构建决策树,并将其可视化,graphviz程序下载)
  12. 计算几何——点到直线的距离、投影点
  13. html 简单表格制作(看了它足以应对大部分表格)
  14. (高小德用车)高仿滴滴/快的应用源代码
  15. 如何有效地对时间进行管理
  16. 联想服务器控制口登录地址_服务器常见远程管理网口及登录方式
  17. Edge浏览器开启下载提速
  18. WPF TabControl 美化
  19. 一篇让你熟练掌握Java常用工具包(全网最全)
  20. 电子商务业务模块分析和介绍以及开发流程

热门文章

  1. 判断kkt条件的例题_kkt条件例子
  2. 分布式京东全站爬取分析
  3. 让牙齿快速变白的几个好方法
  4. 利用samba共享网络打印机
  5. 如何使用网页版微信文件传输助手(图解教程)
  6. GPU和显卡是什么关系?GPU会取代CPU吗?
  7. 用VPS/Linux/CentOS7搭建泰拉瑞亚原版/mod服务器教程
  8. 一个Android开发的2017工作总结(上交领导的,拿去当模板)
  9. 业务逻辑和功能需求表
  10. 乡村振兴战略下传统村落文化旅游设计排京东新书热卖榜前十 ,乡村振兴战略下传统村落文化旅游设计排当当新书热卖榜前九,乡村振兴战略下传统村落文化旅设计符合国家战略理论需求被收入南京理工大图书馆​征订目录​