文档章节

android实现边框

qii
 qii
发布于 2014/04/15 15:53
字数 678
阅读 512
收藏 10
点赞 0
评论 0

我看到京东的客户端,在登录页面账号和密码上有边框。自己也想加这个效果。但是发现android里并没有border或类似的属性。

有以下几种解决方案。

1.嵌套一层,利用内容的margin或者padding的留白加容器的背景来实现边框效果。

其实这个道理很简单,很早的时候那时候我们还用table做html页面布局的时候,我们就是使用cellspacing来实现table的边框的。现在我们也利用同样的想法来实现。

当然内部的容器也是需要有颜色的,如果想实现内部透明的效果则需要将内部View的背景色跟背景的颜色保持一致,这是不太方便的地方。

2图片。

在Android中,给一个控件(或View)设置背景主要是通过background:xxx属性来完成。background的参数一般来说是一个drawable资源。 drawable可以是一张普通的图片,也可以是9 patch图片,还可以是一个xml文件。 给控件设置边框最简单的方式就是把background设置成你预先设计好的带圆角和边框的背景图。但是这种方法的缺点是没有灵活性,不同大小的view要不同尺寸的图片,还要去适应不同分辨率的设备。

3使用9-patch(九宫格)的背景图片来实现边框效果。

做一个有边框的9-patch图片,作为要有边框的View的背景图即可。这样你还可以控制哪边有边框,哪边无边框,这种方法是比较好的一种方法,而且没有多余的View嵌套。另外你还可以实现圆角边框等效果。

4利用shape来实现边框效果。

当然你可以使用shape中的stroke来实现border的效果。

/res/drawable/filename.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <stroke android:width="1dp" android:color="#f00" />
</shape>

只要引用这个shape作为背景图片即可。

5.layer-list实现自由边框

当前版本的Android SDK并没有给stroke提供bottom、left、right之类的属性,也就是说你无法通过它来让长方形的边框少于4条。于是有人想出了这个方法。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  
    <item>
        <shape android:shape="rectangle">
            <stroke 
                android:width="1dp"
                android:color="#333"/>
        </shape>
    </item>
    
    <item
        android:left="1dp"
        android:top="1dp"
        android:right="1dp"
        android:bottom="1dp">
        <shape android:shape="rectangle">
            <solid 
                android:color="#FFF"/>
        </shape>
    </item>

</layer-list>

在第二个item中定义的top,left...就是对应的边框,不设置即没有边框。

© 著作权归作者所有

共有 人打赏支持
qii

qii

粉丝 13
博文 77
码字总数 23520
作品 0
昆明
高级程序员
ANDROID布局实现圆角边框

首先,在res下面新建一个文件夹drawable,在drawable下面新建三个xml文件:shapecornerdown.xml、shapecornerup.xml和shape_corner.xml,分别是下面两个角是圆角边框,上面两个角是圆角边框,...

丁佳辉
2017/11/02
0
0
Android 给ImageView自定义设置边框

1.使用布局方式来实现: <?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:background="@drawable/white"><TableR......

amigos_wu
2012/05/25
0
0
通过layer-list多图层叠加效果实现圆角功能

在android的开发过程中,我们可能会做圆角的效果出来,如下图所示: 四个角都是圆角的效果。如果让UI设计人员直接出图,可能会更简单一些。但是我们使用android中layer-list多图层叠加效果同...

NCThinker
2013/10/14
0
2
Android官方提供的支持不同屏幕大小的全部方法

本文将告诉你如何让你的应用程序支持各种不同屏幕大小,主要通过以下几种办法: 让你的布局能充分的自适应屏幕 根据屏幕的配置来加载合适的UI布局 确保正确的布局应用在正确的设备屏幕上 提供...

带梦想一7飞
2013/06/05
0
0
Android深度定制化TabLayout:圆角,渐变色,背景边框,基于Android原生TabLayout

Android深度定制化TabLayout:圆角,渐变色,背景边框,基于Android原生TabLayout 如今UI设计已经不再满足于下方只有一个下划线,切换后能改变和表示选中颜色的TabLayout了。设计对于TabLayo...

zhangphil
05/28
0
0
Android TableLayout表格布局

一:TableLayout是表格布局先上例子: 定义一个xml布局文件tablelayout.xml: 内容如下: <?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com......

amigos_wu
2012/06/07
0
4
android-样式(style)和主题(theme)

如果我们经常需要对某个类型的组件指定大致相似的格式,比如字体、颜色、背景色等,如果每次都对view组件重复设置这些属性,这无疑增大了工作量,而且不利于项目的后期维护。 其实android里面...

pointerException
2015/08/01
0
0
Android背景透明的 Dialog

一:控制Dialog 的背景方法: 1.定义一个无背景主题主题 <!--去掉背景Dialog--> <style name="NobackDialog" parent="@android :style/Theme.Dialog"> <item name="android:windowBackground"......

冯京宝
2012/08/29
0
0
android使Activity背景透明、模糊

在AndroidManifest.xml中配置activity的android:theme属性为: <style name="TransparentStyleBottom"> <item name="android:windowFrame">@null</item><!--边框--> <item name="android:win......

z.net
2012/12/13
0
0
Android UI:XML文件配置按钮等背景方案

(1)在开发中,我们经常会遇到一些纯色或带边框的简单样式的按钮或div,很多时候,都是用九宫格的背景图片来贴上去。但仔细想来,使用图片也带来了一些性能上的问题,包括过多的图片文件会导...

古沐风
2014/01/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring boot中swagger2使用

1.pom.xml中添加 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version>......

说回答
8分钟前
0
0
tomcat虚拟路径的几种配置方法

tomcat虚拟路径的几种配置方法 一般我们都是直接引用webapps下面的web项目,如果我们要部署一个在其它地方的WEB项目,这就要在TOMCAT中设置虚拟路径了,Tomcat的加载web顺序是先加载 $Tomcat_ho...

Helios51
21分钟前
1
0
Mac 安装jupyter notebook的过程

MAC台式机 python:mac下自带Python 2.7.10 1.先升级了pip安装工具:sudo python -m pip install --upgrade --force pip 2.安装setuptools 工具:sudo pip install setuptools==33.1.1 3.安装......

火力全開
26分钟前
0
0
导航守卫解释与例子

“导航”表示路由正在发生改变。 正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。 记住...

tianyawhl
26分钟前
0
0
Java日志框架-logback配置文件多环境日志配置(开发、测试、生产)(原始解决方法)

说明:这种方式应该算是最通用的,原理是通过判断标签实现。 <!-- if-then form --> <if condition="some conditional expression"> <then> ... </then> </if> ......

浮躁的码农
40分钟前
1
0
FTP传输时的两种登录方式和区别

登录方式 匿名登录 用户名为: anonymous。 密码为:任何合法 email 地址。 授权登录 用户名为:用户在远程系统中的用户帐号。 密码为:用户在远程系统中的用户密码。 区别 匿名登录 只能访问...

寰宇01
42分钟前
0
0
plsql developer 配置监听(不安装oracle客户端)

plsql developer 配置监听(不安装oracle客户端)

微小宝
49分钟前
1
0
数据库(分库分表)中间件对比

本人的宗旨就是,能copy的,绝对不手写。 分区:对业务透明,分区只不过把存放数据的文件分成了许多小块,例如mysql中的一张表对应三个文件.MYD,MYI,frm。 根据一定的规则把数据文件(MYD)和索...

奔跑吧代码
52分钟前
2
0
Netty与Reactor模式详解

在学习Reactor模式之前,我们需要对“I/O的四种模型”以及“什么是I/O多路复用”进行简单的介绍,因为Reactor是一个使用了同步非阻塞的I/O多路复用机制的模式。 I/O的四种模型 I/0 操作 主要...

hutaishi
59分钟前
1
0
【2018.07.16学习笔记】【linux高级知识 20.16-20.19】

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

lgsxp
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部