androidborder
㈠ Android 文字左边虚线
方式:
###第一种是通过写shape布局文件来实现给TextView设置background时引用此布局文件即可实现效果,shape布局文件代码如下:
stroke标签下为虚线框的主要设置,dashGap表示中间隔开一段距离,即定义了样式为虚线,效果图如下:
###第二种方式是通过自定义View使之继承View,然后在onDraw方法中将虚线和文字用Paint画笔画出。
主要代码如下:
public class DashedSurroundTextView extends View {
/
mTextColor 文字颜色 mBorderColor 虚线边界颜色 mBorderWidth虚线边界宽度
mTextSizen 文字大小 mText 文字内容
/
private int mTextColor;
private int mBorderColor;
private float mBorderWidth;
private float mTextSize;
private String mText;
private float start_x = 0;
private float start_y = 0;
private float padding = 5;
private float baseLineLong = 10;
private float radiusX = 20;
private float radiusY = 20;
...
public DashedSurroundTextView(Context context, AttributeSet attrs) {
super(context, attrs);
//获取自定义参数
TypedArray typedArray = context.obtainStyledAttributes(attrs,
R.styleable.DashedSurroundTextView);
//虚线border颜色
mBorderColor = typedArray.getColor(R.styleable.DashedSurroundTextView_border_color, Color.argb(0, 0, 0, 0));
//虚线border宽度
mBorderWidth = typedArray.getDimension(R.styleable.DashedSurroundTextView_border_width, 0);
//字体颜色
mTextColor = typedArray.getColor(R.styleable.DashedSurroundTextView_textColor, Color.argb(0, 0, 0, 0));
//字体大小
mTextSize = typedArray.getDimension(R.styleable.DashedSurroundTextView_textSize, 0);
//显示文字
mText = typedArray.getString(R.styleable.DashedSurroundTextView_text);
}
㈡ Android的布局属性中padding和margin的区别
本文将讲述HTML和CSS的关键—盒子模型(Box model). 理解Box model的关键便是margin和padding属性, 而正确理解这两个属性也是学习用css布局的关键.
注:为什么不翻译margin和padding? 原因一, 在汉语中并没有与之相对应的词语; 原因二: 即使有这样的词语, 由于在编写css代码时, 必须使用margin和padding, 如果我们总用汉语词语代替其来解释的话, 到了实际应用时容易混淆margin和padding的概念.
如果有一点Html基础的话, 就应该了解一些基本元素(Element), 如p, h1~h6, br, div, li, ul, img等. 如果将这些元素细分, 又可以分别归为顶级(top-level)元素,块级(block-level) 元素和内联(inline)元素.
1. Block-level element: 指能够独立存在, 一般的块级元素之间以换行(如一个段落结束后另起一行)分隔. 常用的块级元素包括: p, h1~h6, div, ul等;
2. Inline element: 指依附其他块级元素存在, 紧接于被联元素之间显示, 而不换行. 常用的内联元素包括: img, span, li, br等;
3. Top-level element: 包括html, body, frameset, 表现如Block-level element, 属于高级块级元素.
块级元素是构成一个html的主要和关键元素, 而任意一个块级元素均可以用Box model来解释说明.
Box Model:任意一个块级元素均由content(内容), padding, background(包括背景颜色和图片), border(边框), margin五个部分组成. 立体图如下(Fig. 1):
即ab=cd=30px, ID1的margin-top/bottom=10px被折叠了, 而且ID1应有的margin黑色背景也一同被折叠消失了.
为什么会折叠:造成以上现象的原因是, 我们在css中并没有声明id为ID1的元素div的height(高), 因此它的高便被设为auto(自动)了. 一旦其值被设为auto, 那么浏览器就会认为它的高为子元素ID2的border-top到border-bottom之间的距离, 即Fig. 4中bc的长度, 所以子元素ID2的margin-top/bottom(30px)就伸出到了父元素ID1之外, 出现了Fig. 4中ab与cd之间的空白区域. 因此父元素ID1的margin-top/bottom因子元素的”红杏出墙”而被折叠消失了.
如何解决折叠问题:可能大家最初想到的办法就是根据折叠发生的原因—auto, 来解决问题. 但是, 在实际操作中, 某些元素如div, h1, p等, 我们是不可能预先知道它的高是多少的, 因此在css文件中是不能常规通过声明元素的高来解决折叠问题.
我们需要在css文件中加入如下代码(红色部分):
#ID1 {
background-color: #333;
color: #FFF;
margin-top: 10px;
margin-bottom: 10px;
padding-top:1px;
padding-bottom:1px;
}
或是:
#ID1 {
background-color: #333;
color: #FFF;
margin-top: 10px;
margin-bottom: 10px;
border-top:1px solid #333;
border-bottom:1px solid #333;
}
通过增加以上代码, 便可使浏览器重新计算ID1的高, 使其为子元素ID2的margin-top/bottom外缘(outer top/bottom)之间的距离, 即Fig. 3中be的距离.
简单说来:
也就是说 设置margin 那么他所占据的空白地方会是在边框外面
设置padding 他所占据的空白地方是在边框里面
而且在IE6 一下的版本中 存在这padding 计算错误的BUG
CSS 的宽度属性本来是不包含padding的 但是 在ie下面有的时候宽度是包含padding 所以 建议在不熟悉CSS 在定位的时候 都用margin属性
㈢ android边框能只定义左边框吗
android虽然提供了四个属性, 但是目前这四个无论设置哪个都是影响到四个的。 如果确实有必要的话,那可以通过以下变态手法达到。 在上面放一个独立的控件,然后另外一个矩形放在那个控件的上层。 这里应该要用到层布局。
给view设置边框的代码:
1.创建xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
2.设置<!-- 圆角 -->
<corners
android:radius="9dp"
android:topLeftRadius="2dp"
android:topRightRadius="2dp"
android:bottomLeftRadius="2dp"
android:bottomRightRadius="2dp"/><!-- 设置圆角半径 -->
3.设置<!-- 渐变 -->
<gradient
android:startColor="@android:color/white"
android:centerColor="@android:color/black"
android:endColor="@android:color/black"
android:useLevel="true"
android:angle="45"
android:type="radial"
android:centerX="0"
android:centerY="0"
android:gradientRadius="90"/>
4.设置<!-- 间隔 -->
<padding
android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp"/><!-- 各方向的间隔 -->
5.设置大小精细<!-- 大小 -->
<size
android:width="50dp"
android:height="50dp"/><!-- 宽度和高度 -->
6.设置<!-- 填充 -->
<solid
android:color="@android:color/white"/><!-- 填充的颜色 -->
7.设置边框<!-- 描边 -->
<stroke
android:width="2dp"
android:color="@android:color/black"
android:dashWidth="1dp"
android:dashGap="2dp"/>
</shape>
㈣ 怎么给android 设置边框
边框主要是使用shape文件,可以定制左右上下的边框,如果想要隐藏某部分,设置我透明即可。
㈤ 怎么给android 设置边框
android设置边框利用内容的margin或者padding的留白加容器的背景来实现边框效果。
shape来实现边框效果
corners是设置边框圆角
stroke是描边的
layer-list实现自由边框
嵌套一层,利用内容的margin或者padding的留白加容器的背景来实现边框效果。其实这个道理很简单,很早的时候那时候我们还用table做html页面布局的时候,我们就是使用cellspacing来实现table的边框的。现在我们也利用同样的想法来实现。
当然内部的容器也是需要有颜色的,如果想实现内部透明的效果则需要将内部View的背景色跟背景的颜色保持一致,这是不太方便的地方。
在Android中,给一个控件(或View)设置背景主要是通过background:xxx属性来完成。background的参数一般来说是一个drawable资源。
给控件设置边框最简单的方式就是把background设置成你预先设计好的带圆角和边框的背景图。但是这种方法的缺点是没有灵活性,不同大小的view要不同尺寸的图片,还要去适应不同分辨率的设备。
3使用9-patch(九宫格)的背景图片来实现边框效果。
做一个有边框的9-patch图片,作为要有边框的View的背景图即可。这样你还可以控制哪边有边框,哪边无边框,这种方法是比较好的一种方法,而且没有多余的View嵌套。另外你还可以实现圆角边框等效果。
4利用shape来实现边框效果。
当然你可以使用shape中的stroke来实现border的效果。
/res/drawable/filename.xml
只要引用这个shape作为背景图片即可。
5.layer-list实现自由边框
当前版本的Android
SDK并没有给stroke提供bottom、left、right之类的属性,也就是说你无法通过它来让长方形的边框少于4条。于是有人想出了这个方法。
android:width="1dp"
android:color="#333"/>
android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp">
android:color="#FFF"/>
在第二个item中定义的top,left...就是对应的边框,不设置即没有边框。