Ⅰ android我想用代码把一个按钮顶到最右边怎么做
在他的父级标签上加个样式属性:text-align:center;
以下为简例,居中可以理解为,文本内容或者文本元素在指定范围内居中显示,这些都是样式排版基础,你可以上w3school多学习下
<td align=center><input type="button" name="按钮一" value="按钮一" /></td>
<div style="text-align:center; width:200px;"><input type="button" name="按钮一" value="按钮一" /></div>
text-align 属性规定元素中的文本的水平对齐方式。
该属性通过指定行框与哪个点对齐,从而设置块级元素内文本的水平对齐方式。通过允许用户代理调整行内容中字母和字之间的间隔,可以支持值 justify;不同用户代理可能会得到不同的结果。
默认值:
如果 direction 属性是 ltr,则默认值是 left;如果 direction 是 rtl,则为 right。
继承性:
yes
版本:
CSS1
javaScript 语法:
object.style.textAlign="right"
可能的值
值
描述
left 把文本排列到左边。默认值:由浏览器决定。
right 把文本排列到右边。
center 把文本排列到中间。
justify 实现两端对齐文本效果。
inherit 规定应该从父元素继承 text-align 属性的值。
值 justify
最后一个水平对齐属性是 justify,它会带来自己的一些问题。
值 justify 可以使文本的两端都对齐。在两端对齐文本中,文本行的左右两端都放在父元素的内边界上。然后,调整单词和字母间的间隔,使各行的长度恰好相等。您也许已经注意到了,两端对齐文本在打印领域很常见。不过在 CSS 中,还需要多做些考虑。
要由用户代理(而不是 CSS)来确定两端对齐文本如何拉伸,以填满父元素左右边界之间的空间。例如,有些浏览器可能只在单词之间增加额外的空间,而另外一些浏览器可能会平均分布字母间的额外空间(不过 CSS 规范特别指出,如果 letter-spacing 属性指定为一个长度值,“用户代理不能进一步增加或减少字符间的空间”)。还有一些用户代理可能会减少某些行的空间,使文本挤得更紧密。所有这些做法都会影响元素的外观,甚至改变其高度,这取决于用户代理的对齐选择影响了多少文本行。
CSS 也没有指定应当如何处理连字符。大多数两端对齐文本都使用连字符将长单词分开放在两行上,从而缩小单词之间的间隔,改善文本行的外观。不过,由于 CSS 没有定义连字符行为,用户代理不太可能自动加连字符。因此,在 CSS 中,两端对齐文本看上去没有打印出来好看,特别是元素可能太窄,以至于每行只能放下几个单词。当然,使用窄设计元素是可以的,不过要当心相应的缺点。
注1:CSS 中没有说明如何处理连字符,因为不同的语言有不同的连字符规则。规范没有尝试去调和这样一些很可能不完备的规则,而是干脆不提这个问题。
Ⅱ 安卓layout布局,如何靠右
里面我记得有个属性是android:layout_alignParentLeft 如果该值为true,则将该控件的左边与父控件的左边对齐,android:layout_alignParentRight 如果该值为true,则将该控件的右边与父控件的右边对齐,用这个就可以了。
Ⅲ Android TextView使用及性能优化
TextView 是Android中最常用的控件,在这里记录下TextView 的用法;
在Android中可以使用系统自带的4种字体:
在XML中使用 android:typeface="normal" 进行设置
将字体文件放到main/assets/fonts目录下,使用Asset读取字体后进行设置
使用 android:drawableLeft="@mipmap/ic_launcher" 可以设置一张图片显示在文字的上下左右,减少布局层级
使用Span能够在一段TextView中设置不同颜色的字体,链接,图片等内容
使用ClickableSpan 能够设置一段文字的点击事件
创建自己的MyClickableSpan:
之后使用SpannableStringBuilder来创建字符串,并使用setSpan来为字符串的一部分设置Span对象
其中setSpan()方法的最后一个参数标识有以下常量,这些常量标识着在 对SpannableStringBuilder进行insert时 添加的字符适用的规则:
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
Spanned.SPAN_EXCLUSIVE_INCLUSIVE
Spanned.SPAN_INCLUSIVE_EXCLUSIVE
Spanned.SPAN_INCLUSIVE_INCLUSIVE
前一个 EXCLUSIVE / INCLUSIVE 标识着在设置了Span的一段字符之前(紧挨着)插入字符时,被不被包含到Span范围中, EXCLUSIVE 表示包含, INCLUSIVE 表示不包含;
第二个 EXCLUSIVE / INCLUSIVE 同理表示插入这段字符之后的效果;
ImageSpan用于在TextView中插入图片,可以用来实现图文混排
使用方法:
这样实现的效果是文字与图片底部进行对齐,如果需要图片中线与文字中线对其,需要自己重写ImageSpan
Android 中的TextView中存在着很多EditText中的特性,在setText()方法中会涉及到很多Span相关的操作,比如设置TextWatcher,重新构造Spannable等操作,在我们仅仅显示静态文本的时候这些操作都是没有必要的(通过使用普通的TextView进行Debug来验证普通的TextView的确是Span的);
在大量显示静态文本的时候就可以通过StaticLayout来计算出TextView的布局信息,这项工作可以放到非UI线程来进行,能够减少在setText()的时候UI线程的耗时,达到优化TextView性能的目的;
StaticLayout是TextView中用于显示多行静态文本的Layout,也是能够支持SpannableString的,只是不能在Span变化之后重新Layout,所以在大部分场景下已经适用;
通过这个自定义的View来显示Text,在onDraw()的时候直接使用layout来进行绘制,而设置需要显示的文本则直接使用setLayout()来实现
使用下面给出的参考链接中的测试Demo在 ZTE A2017 Android7.1.1 高通820设备上,普通TextView在ListView中连续滚动的帧数是55帧,使用StaticLayout的结果为60帧
可以作为在APP使用CPU资源较多的情况下的优化手段
参考链接: TextView预渲染研究
在Android中,TextView的测量消耗了大量的时间,Android P中提供了PrecomputedText能够将测量这个过程放到后台来执行,减轻对于UI线程的卡顿;
非Android P时,使用AppCompatTextView控件,使用setTextFeature()方法来将文本的measure过程放到其他线程来执行,而不是直接将text应用于TextView;
在调用了这个方法之后如果对TextView进行边距,文字大小等的设置都将会报错;
Prefetch Text Layout in RecyclerView
PrecomputedTextCompat
在ListView中仅替换设置Text的方法时未测试出性能与普通方法有什么优势,猜测是ListView没有在getView和显示之间预留时间,
测试项目地址:
https://github.com/GavynZhang/PrecomuptedTextViewTest
Ⅳ 2021-09-15 TextView属性大全
TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域。
TextView 类的层次关系如下:
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
直接子类:
Button,
CheckedTextView,
Chronometer,
DigitalClock,
EditText
间接子类:
AutoCompleteTextView,
CheckBox,
CompoundButton,
ExtractEditText,
MultiAutoCompleteTextView,
RadioButton,
ToggleButton
TextView 类方法
前面是方法,中间解释,后面为方法的返回值
getDefaultMovementmethod //获取默认的箭头按键移动方式 //Movementmethod
getText //获得TextView 对象的文本 //CharSquence
length //获得TextView 中的文本长度 //Int
getEditableText //取得文本的可编辑对象,通过 这个对象可对TextView 的文本进行操作,如在光标之后插入字符 //Void
getCompoundPaddingBottom //返回底部填充物 //Int
setCompoundDrawables //设置图像显示的位置,在 设置该Drawable 资源之前需要调用setBounds(Rect) //Void
//设置Drawable 图像的显示位置,但其边界不变 //Void
setPadding //根据位置设置填充物 //Void
getAutoLinkMask //返回自动连接的掩码 //Void
setTextColor //设置文本显示的颜色 //Void
setHighlightColor //设置文本选中时显示的颜色 //Void
setShadowLayer //设置文本显示的阴影颜色 //Void
setHintTextColor //设置提示文字的颜色 //Void
setLinkTextColor //设置链接文字的颜色 //Void
setGravity //设置当TextView 超出了文本本身时横向以及垂直对齐 //Void
getFreezesText //设置该视图是否包含整个文本,如果包含则返回真值,否则返回假值 //Boolean
属性
android:autoLink //设置是否当文本为URL 链接/email/电话号码/map 时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)
android:autoText //如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。
android:bufferType //指定getText()方式取得的文本类别。选项editable 类似于StringBuilder 可追加字符,也就是说getText 后可调用append 方法设置文本内容。
android:capitalize //设置英文字母大写类型。此处无效果,需要弹出输入法才能看得到,参见EditView 此属性说明。
android:cursorVisible //设定光标为显示/隐藏,默认显示。
android:digits //设置允许输入哪些字符。如“1234567890.+-*/%\n()”
android:drawableBottom //在text 的下方输出一个drawable,如图片。如果指定一个颜色的话会把text 的背景设为该颜色,并且同时和background 使用时覆盖后者。
android:drawableLeft //在text 的左边输出一个drawable,如图片。
android:drawablePadding //设置text 与drawable(图片)的间隔,与drawableLeft、drawableRight、drawableTop、drawableBottom 一起使用,可设置为负数,单独使用没有效果。
android:drawableRight //在text 的右边输出一个drawable,如图片。
android:drawableTop //在text 的正上方输出一个drawable,如图片。
android:ellipsize //设置当文字过长时,该控件该如何显示。有如下值设置:”start”—–省略号显示在开头;”end”——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动)
android:freezesText //设置保存文本的内容以及光标的位置。
android:gravity //设置文本位置,如设置成“center”,文本将居中显示。
android:hint //Text 为空时显示的文字提示信息,可通过textColorHint 设置提示信息的颜色。比较奇怪的是TextView 本来就相当于Label,怎么会不设置Text?!
android:includeFontPadding //设置文本是否包含顶部和底部额外空白,默认为true。
android:inputMethod //为文本指定输入法,需要完全限定名(完整的包名)。
android:linksClickable //设置链接是否点击连接
android:marqueeRepeatLimit //在ellipsize 指定marquee 的情况下,设置重复滚动的次数,当设置为marquee_forever 时表示无限次。
android:ems //设置TextView 的宽度为N 个字符的宽度。
android:maxEms //设置TextView 的宽度为最长为N 个字符的宽度。
android:minEms //设置TextView 的宽度为最短为N 个字符的宽度。
android:maxLength //限制显示的文本长度,超出部分不显示。
android:lines //设置文本的行数,设置两行就显示两行,即使第二行没有数据。
android:maxLines //设置文本的最大显示行数,与width 或者layout_width 结合使用,超出部分自动换行,超出行数将不显示
android:minLines //设置文本的最小行数,与lines 类似。
android:lineSpacingExtra //设置行间距。
android:lineSpacingMultiplier //设置行间距的倍数。
android:password //以小点”.”显示文本
android:phoneNumber //设置为电话号码的输入方式。
android:scrollHorizontally //设置文本超出TextView 的宽度的情况下,是否出现横拉条。
android:shadowColor //指定文本阴影的颜色,需要与 shadowRadius 一起使用。
android:shadowRadius //设置阴影的半径。
android:shadowDx //设置阴影横向坐标开始位置。
android:shadowDy //设置阴影纵向坐标开始位置。
android:singleLine //设置单行显示。
android:text //设置显示文本.
android:textAppearance //设置文字外观。如“?android:attr/textAppearanceLargeInverse”这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。可设置的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse
android:textColor //设置文本颜色
android:textColorHighlight //被选中文字的底色,默认为蓝色
android:textColorHint //设置提示信息文字的颜色,默认为灰色。与hint 一起使用。
android:textColorLink //文字链接的颜色.
android:textScaleX //设置文字之间间隔,默认为1.0f。
android:textSize //设置文字大小,推荐度量单位”sp”,如”15sp”
android:textStyle //设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开android:typeface //设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3]
android:height //设置文本区域的高度,支持度量单位:px(像素)/dp/sp/in/mm(毫米)
android:maxHeight //设置文本区域的最大高度
android:minHeight //设置文本区域的最小高度
android:width //设置文本区域的宽度,支持度量单位:px(像素)/dp/sp/in/mm(毫米)。
android:maxWidth //设置文本区域的最大宽度
android:minWidth //设置文本区域的最小宽度
原文链接: https://blog.csdn.net/Adomner/article/details/52263987
Ⅳ android自定义对话框宽不能占满父layout的解决办法有哪些
1.FrameLayout
FrameLayout 是 最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 —
比如,一张你要发布的图片。所有的子元素将会固定
在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡
住(除非后一个子元素是透明的)。
FrameLayout is the simplest type of layout object. It's basically a blank
space on your screen that you can later fill with a single object — for example,
a picture that you'll swap in and out. All child elements of the FrameLayout are
pinned to the top left corner of the screen; you cannot specify a different
location for a child view. Subsequent child views will simply be drawn over
previous ones, partially or totally obscuring them (unless the newer object is
transparent).
FrameLayout默认填充widget等在左上角,然后后面的控件遮住前面的,比如说有两个TextView,Text内容分别是I am
textview 1 和
I am textview 2 看到的效果会如下:?xml version="1.0" encoding="utf-8"?>
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="I am textview 1"
/>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="I am textview 2"
/>
2.LinearLayout
LinearLayout
以你为它设置的垂直或水平的属性值,来排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一个垂直列表的每一行只会有一个元素,而不管他们有多
宽,而一个水平列表将会只有一个行高(高度为最高子元素的高度加上边框高度)。LinearLayout保持子元素之间的间隔以及互相对齐(相对一个元素
的右对齐、中间对齐或者左对齐)。
LinearLayout
还支持为单独的子元素指定weight。好处就是允许子元素可以填充屏幕上的剩余空间。这也避免了在一个大屏幕中,一串小对象挤成一堆的情况,而是允许他们放大填充空白。子元素指定一个weight值,剩余的空间就会按这些子元素指定的weight比例分配给这些子元素。默认的weight值为0。例如,如
果有三个文本框,其中两个指定了weight值为1,那么,这两个文本框将等比例地放大,并填满剩余的空间,而第三个文本框不会放大。
下 面的两个窗体采用LinearLayout,包含一组的元素:一个按钮,几个标签,几个文本框。两个窗体都为布局做了一番修饰。文本框的width被设置
为FILL_PARENT;其它元素的width被设置为WRAP_CONTENT。默认的对齐方式为左对齐。左边的窗体没有设置weight(默认为
0);右边的窗体的comments文本框weight被设置为1。如果Name文本框也被设置为1,那么Name和Comments这两个文本框将会有同样的高度。
在 一个水平排列的LinearLayout中,各项按他们的文本基线进行排列(第一列第一行的元素,即最上或最左,被设定为参考基线)。因此,人们在一个窗
体中检索元素时,就不需要七上八下地读元素的文本了。我们可以在layout的XML中设置
android:baselineAligned="false",来关闭这个设置。
LinearLayout aligns all children in a single direction — vertically or
horizontally, depending on how you define the orientation attribute. All
children are stacked one after the other, so a vertical list will only have one
child per row, no matter how wide they are, and a horizontal list will only be
one row high (the height of the tallest child, plus padding). A LinearLayout
respects margins between children and the gravity(right, center, or left
alignment) of each child.
LinearLayout是Android
sdk创建project时的默认Layout,支持两种方式,默认是垂直vertical的线性layout,另一个是水平horizontal方向的线性排列。
效果如下android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="I am textview 1"
/>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="I am textview 2"
/>android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_width="10px"
android:layout_height="fill_parent"
android:text="I am textview 1"
/>
android:layout_width="10px"
android:layout_height="wrap_content"
android:text="I am textview 2"
/>
3.RelativeLayout
RelativeLayout 允
许子元素指定他们相对于其它元素或父元素的位置(通过ID指定)。因此,你可以以右对齐,或上下,或置于屏幕中央的形式来排列两个元素。元素按顺序排列,
因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。如果使用XML来指定这个layout,在你定义它之前,
被关联的元素必须定义。
这是一个RelativeLayout例子,其中有可视的和不可视的元素。基础的屏幕layout对象是一个RelativeLayout对象。
这 个视图显示了屏幕元素的类名称,下面是每个元素的属性列表。这些属性一部份是由元素直接提供,另一部份是由容器的LayoutParams成员
(RelativeLayout的子类)提供。RelativeLayout参数有
width,height,below,alignTop,toLeft,padding和marginLeft。注意,这些参数中的一部份,其值是相对
于其它子元素而言的,所以才RelativeLayout。这些参数包括toLeft,alignTop和below,用来指定相对于其它元素的左,上和
下的位置。
RelativeLayout lets child views specify their position relative to the
parent view or to each other (specified by ID). So you can align two elements by
right border, or make one below another, centered in the screen, centered left,
and so on. Elements are rendered in the order given, so if the first element is
centered in the screen, other elements aligning themselves to that element will
be aligned relative to screen center. Also, because of this ordering, if using
XML to specify this layout, the element that you will reference (in order to
position other view objects) must be listed in the XML file before you refer to
it from the other views via its reference ID.android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding = "10px"
>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="I am textview 1"
/>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="I am textview 2"
android:layout_marginLeft = "150px"
/>
android:id="@+id/Button02" android:layout_width="wrap_content"
android:text="Ok"
android:layout_height="wrap_content"
android:layout_marginLeft = "240px"
android:layout_marginTop = "40px"
>
android:layout_marginLeft = "160px"
android:layout_marginTop = "40px"
>
4.AbsoluteLayout
AbsoluteLayout 可 以让子元素指定准确的x/y坐标值,并显示在屏幕上。(0,
0)为左上角,当向下或向右移动时,坐标值将变大。AbsoluteLayout没有页边
框,允许元素之间互相重叠(尽管不推荐)。我们通常不推荐使用AbsoluteLayout,除非你有正当理由要使用它,因为它使界面代码太过刚性,以至
于在不同的设备上可能不能很好地工作。
5.TableLayout
TableLayout 将子元素的位置分配到行或列中。android的
一个TableLayout由许多的TableRow组成,每个TableRow都会定义一个row(事实上,你可以定义其它的子对象,这在下面会解释
到)。TableLayout容器不会显示row、cloumns或cell的边框线。每个row拥有0个或多个的cell;每个cell拥有一个
View对象。表格由列和行组成许多的单元格。表格允许单元格为空。单元格不能跨列,这与HTML中的不一样。下图显示了一个TableLayout,图
中的虚线代表不可视的单元格边框。
列可以被隐藏,也可以被设置为伸展的从而填充可利用的屏幕空间,也可以被设置为强制列收缩直到表格匹配屏幕大小。对于更详细信息,可以查看这个类的参考文档。
TableLayout positions its children into rows and columns. TableLayout
containers do not display border lines for their rows, columns, or cells. The
table will have as many columns as the row with the most cells. A table can
leave cells empty, but cells cannot span columns, as they can in HTML.
TableRow objects are the child views of a TableLayout (each TableRow
defines a single row in the table). Each row has zero or more cells, each of
which is defined by any kind of other View. So, the cells of a row may be
composed of a variety of View objects, like ImageView or TextView objects. A
cell may also be a ViewGroup object (for example, you can nest another
TableLayout as a cell).
TableLayout和HTML的基本上类似,还提供TableRow class, 直接等价与比如说要做成一个类似下面的HTML叶面
I am textview1I am textview2
[OK button]
[Cancel button]android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
android:text="I am textview 1" />
android:paddingLeft = "20px"
android:width = "200px"
android:text="I am textview 2"
/>
android:id="@+id/Button02" android:text="Ok"
>
>