Android 常用知识点总结之UI组件(持续更新)

以下知识点为常用且不熟知的一些知识点

1.TextView

1.1 shapeDrawable知识点
<solid android:color = "xxx"> 这个是设置背景颜色的

<stroke android:width = "xdp" android:color="xxx"> 这个是设置边框的粗细,以及边框颜色的

<padding androidLbottom = "xdp"...> 这个是设置边距的

<corners android:topLeftRadius="10px"...> 这个是设置圆角的

<gradient> 这个是设置渐变色的,可选属性有: startColor:起始颜色 endColor:结束颜色 
centerColor:中间颜色 angle:方向角度,等于0时,从左到右,然后逆时针方向转,当angle = 90度时从下往上 type:设置渐变的类型
1.2 drawableXxx;可以设置四个方向的图片

xml中修改

drawableTop(上),drawableButtom(下),drawableLeft(左),drawableRight(右) 

另外,你也可以使用drawablePadding来设置图片与文字间的间距!

Java中代码中进行修改

第一步:Drawable[] drawable = textview.getCompoundDrawables( );
获得四个不同方向上的图片资源,数组元素依次是:左上右下的图片


第二步:drawable[1].setBounds(100, 0, 200, 200);
接着获得资源后,可以调用setBounds设置左上右下坐标点,比如这里设置了代表的是:
 长是:从离文字最左边开始100dp处到200dp处 宽是:从文字上方0dp处往上延伸200dp!


第三步:textview..setCompoundDrawables(drawable[0], drawable[1], drawable[2], drawable[3]);
为TextView重新设置drawable数组!没有图片可以用null代替哦! 
PS:另外,从上面看出我们也可以直接在Java代码中调用setCompoundDrawables为 TextView设置图片!
1.3autoLink相关知识点

all就是全部都包含,自动识别协议头~ 在Java代码中可以调用setAutoLinkMask(Linkify.ALL); 这个时候可以不写协议头,autolink会自动识别,但是还要为这个TextView设置: setMovementMethod(LinkMovementMethod.getInstance()); 不然点击了是没效果的!

1.4TextView内容转HTML代码
        //将字符串转换为**CharSequence**接口
        t1.setText(Html.fromHtml(s1));
        t1.setMovementMethod(LinkMovementMethod.getInstance());
1.5跑马灯效果
         android:singleLine="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"

2.EditText

2.1常用属性
  • android:hint //设置hint提示文本

  • android:textColorHint //设置hint提示文字颜色

  • android:textStyle //设置文本字体样式,bold(加粗),italic(倾斜),normal(默认是正常字体).

  • android:singleLine //设置是否单行输入 true(单行输入),false(会自动换行).注意:该属性在使用时提示已过时,建议使用android:maxLines="1"属性替代.

  • android:textAlignment //设置EditText中文本显示的位置,center(居中),inherit(默认,居左边显示),viewStart(居左显示),viewEnd(居右显示),textStart(居左显示),textEnd(居右显示).这里需要注意的是最低支持的API版本是17,前两个可以在API14中使用,而后面使用就会报红线...

  • android:textColorHighlight //设置被选中字体的颜色.默认为 Theme 主题中的 “colorAccent”的颜色.

  • textCursorDrawable //设置被光标的颜色.默认为 Theme 主题中的 “colorAccent”的颜色.

  • android:textScaleX //设置文本的水平缩放系数.

  • android:typeface //设置hint提示文本的字体.normal(默认),monospace,sans,serif.这里就不解释了,大家试一下就能看出效果.

  • android:background //设置EditText背景."@null"设置背景为透明.当我们设置背景后,EditText的那条线就会消失.

  • android:textAppearance //设置文本的颜色,字体,大小和样式.

  • android:digits //设置只接收指定的文本内容.

  • android:editable //设置EditText是否可以编辑.当你设置为true,会提示你该EditText已经是可编辑的.设置为false时会提示使用inputType替代.

  • android:inputType //设置文本的类型,用于帮助输入法显示合适的键盘类型.

  • android:maxLength //设置EditText最多接受的文本的个数.

  • android:lines //设置EditText显示的行数,设置两行就显示两行,即使第二行没有数据.

  • android:lineSpacingExtra //设置行间距.

  • android:lineSpacingMultiplier //设置行间距的倍数. 如设置成1.5倍.

  • android:imeOptions //设置右下角IME动作与编辑框相关的动作,如actionDone右下角将显示一个“完成”,而不设置默认是一个回车符号.下面会详细说明.

2.inputType用法

android:inputType=none:普通字符。

android:inputType=text:普通字符。

android:inputType=textCapCharacters:字母大写。

android:inputType=textCapWords:首字母大写。

android:inputType=textCapSentences:仅第一个字母大写。

android:inputType=textAutoCorrect:自动完成。

android:inputType=textAutoComplete:自动完成。

android:inputType=textMultiLine:多行输入。

android:inputType=textImeMultiLine:输入法多行(如果支持)。

android:inputType=textNoSuggestions:不提示。

android:inputType=textUri:网址。

android:inputType=textEmailAddress:电子邮件地址。

android:inputType=textEmailSubject:邮件主题。

android:inputType=textShortMessage:短讯。

android:inputType=textLongMessage:长信息。

android:inputType=textPersonName:人名。

android:inputType=textPostalAddress:地址。

android:inputType=textPassword:密码。

android:inputType=textVisiblePassword:可见密码。

android:inputType=textWebEditText:作为网页表单的文本。

android:inputType=textFilter:文本筛选过滤。

android:inputType=textPhonetic:拼音输入。

android:inputType=number:数字。

android:inputType=numberSigned:带符号数字格式。

android:inputType=numberDecimal:带小数点的浮点格式。

android:inputType=phone:拨号键盘。

android:inputType=datetime:时间日期。

android:inputType=date:日期键盘。

android:inputType=time:时间键盘。

3.ImageView

3.1 JAVA中的用法
前景(对应XML的src属性):setImageDrawable( );
背景(对应XML的background属性):setBackgroundDrawable( );
3.2 adjustViewBounds设置缩放是否保存原图长宽比
单独设置不起作用,需要配合maxWidth和maxHeight属性一起使用!
android:adjustViewBounds="true"
android:maxHeight:设置ImageView的最大高度
android:maxWidth:设置ImageView的最大宽度
3.3 scaleType设置缩放类型
fitXY:对图像的横向与纵向进行独立缩放,使得该图片完全适应ImageView,
但是图片的横纵比可能会发生改变

fitStart:保持纵横比缩放图片,知道较长的边与Image的编程相等,
缩放完成后将图片放在ImageView的左上角

fitCenter:同上,缩放后放于中间;

fitEnd:同上,缩放后放于右下角;

center:保持原图的大小,显示在ImageView的中心。
当原图的size大于ImageView的size,超过部分裁剪处理。

centerCrop:保持横纵比缩放图片,知道完全覆盖ImageView,可能会出现图片的显示不完全

centerInside:保持横纵比缩放图片,直到ImageView能够完全地显示图片

matrix['meɪtrɪks]:默认值,不改变原图的大小,从ImageView的左上角开始绘制原图, 
原图超过ImageView的部分作裁剪处理

4.Button

1)ToggleButton(开关按钮)

可供我们设置的属性:

android:disabledAlpha:设置按钮在禁用时的透明度
android:textOff:按钮没有被选中时显示的文字
android:textOn:按钮被选中时显示的文字 另外,除了这个我们还可以自己写个selector,然后设置下Background属性即可~
2) Switch(开关)

可供我们设置的属性:

android:showText:设置on/off的时候是否显示文字,boolean
android:splitTrack:是否设置一个间隙,让滑块与底部图片分隔,boolean
android:switchMinWidth:设置开关的最小宽度
android:switchPadding:设置滑块内文字的间隔
android:switchTextAppearance:设置开关的文字外观,暂时没发现有什么用...
android:textOff:按钮没有被选中时显示的文字
android:textOn:按钮被选中时显示的文字
android:textStyle:文字风格,粗体,斜体写划线那些
android:track:底部的图片
android:thumb:滑块的图片
android:typeface:设置字体,默认支持这三种:sans, serif, monospace;除此以外还可以使用 其他字体文件(*.ttf),首先要将字体文件保存在assets/fonts/目录下,不过需要在Java代码中设置: Typeface typeFace =Typeface.createFromAsset(getAssets(),"fonts/HandmadeTypewriter.ttf"); textView.setTypeface(typeFace);

5.SeekBar

好吧,基本用法其实很简单,常用的属性无非就下面这几个常用的属性,Java代码里只要setXxx即可:

android:max="100" //滑动条的最大值
android:progress="60" //滑动条的当前值
android:secondaryProgress="70" //二级滑动条的进度
android:thumb = "@mipmap/sb_icon" //滑块的drawable

接着要说下SeekBar的事件了,SeekBar.OnSeekBarChangeListener 我们只需重写三个对应的方法:

onProgressChanged:进度发生改变时会触发
onStartTrackingTouch:按住SeekBar时会触发
onStopTrackingTouch:放开SeekBar时触发

6.ProgressBar

常用属性详解:

  • android:max:进度条的最大值
  • android:progress:进度条已完成进度值
  • android:progressDrawable:设置轨道对应的Drawable对象
  • android:indeterminate:如果设置成true,则进度条不精确显示进度
  • android:indeterminateDrawable:设置不显示进度的进度条的Drawable对象
  • android:indeterminateDuration:设置不精确显示进度的持续时间
  • android:secondaryProgress:二级进度条,类似于视频播放的一条是当前播放进度,一条是缓冲进度,前者通过progress属性进行设置!
对应的再Java中我们可调用下述方法:
  • getMax():返回这个进度条的范围的上限
  • getProgress():返回进度
  • getSecondaryProgress():返回次要进度
  • incrementProgressBy(int diff):指定增加的进度
  • isIndeterminate():指示进度条是否在不确定模式下
  • setIndeterminate(boolean indeterminate):设置不确定模式下

7.ScrollView(滚动条)

scrollView.fullScroll(ScrollView.**FOCUS_DOWN**);滚动到底部
scrollView.fullScroll(ScrollView.**FOCUS_UP**);滚动到顶部

垂直方向滑块:android:scrollbarThumbVertical
水平方向滑块:android:scrollbarThumbHorizontal

滚动速度
@Override
public void fling(int velocityY) {
    super.fling(velocityY / 2);    //速度变为原来的一半
}

8.DatePicker(日期选择器)

可供我们使用的属性如下:
android:calendarTextColor : 日历列表的文本的颜色
android:calendarViewShown:是否显示日历视图
android:datePickerMode:组件外观,可选值:spinner,calendar 前者效果如下,默认效果是后者
android:dayOfWeekBackground:顶部星期几的背景颜色
android:dayOfWeekTextAppearance:顶部星期几的文字颜色
android:endYear:去年(内容)比如2010
android:firstDayOfWeek:设置日历列表以星期几开头
android:headerBackground:整个头部的背景颜色
android:headerDayOfMonthTextAppearance:头部日期字体的颜色
android:headerMonthTextAppearance:头部月份的字体颜色
android:headerYearTextAppearance:头部年的字体颜色
android:maxDate:最大日期显示在这个日历视图mm / dd / yyyy格式
android:minDate:最小日期显示在这个日历视图mm / dd / yyyy格式
android:spinnersShown:是否显示spinner
android:startYear:设置第一年(内容),比如19940年
android:yearListItemTextAppearance:列表的文本出现在列表中。
android:yearListSelectorColor:年列表选择的颜色

9.CalendarView(日历视图)

android:firstDayOfWeek:设置一个星期的第一天
android:maxDate :最大的日期显示在这个日历视图mm / dd / yyyy格式
android:minDate:最小的日期显示在这个日历视图mm / dd / yyyy格式
android:weekDayTextAppearance:工作日的文本出现在日历标题缩写

10.Spinner(列表选项框)

android:dropDownHorizontalOffset:设置列表框的水平偏移距离
android:dropDownVerticalOffset:设置列表框的水平竖直距离
android:dropDownSelector:列表框被选中时的背景
android:dropDownWidth:设置下拉列表框的宽度
android:gravity:设置里面组件的对其方式
android:popupBackground:设置列表框的背景
android:prompt:设置对话框模式的列表框的提示信息(标题),只能够引用string.xml 中的资源id,而不能直接写字符串
android:spinnerMode:列表框的模式,有两个可选值: dialog:对话框风格的窗口 dropdown:下拉菜单风格的窗口(默认)
可选属性:android:entries:使用数组资源设置下拉列表框的列表项目

11AutoCompleteTextView

android:completionHint:设置下拉菜单中的提示标题
android:completionHintView:定义提示视图中显示下拉菜单
android:completionThreshold:指定用户至少输入多少个字符才会显示提示
android:dropDownAnchor:设置下拉菜单的定位"锚点"组件,如果没有指定改属性, 将使用该TextView作为定位"锚点"组件
android:dropDownHeight:设置下拉菜单的高度
android:dropDownWidth:设置下拉菜单的宽度
android:dropDownHorizontalOffset:指定下拉菜单与文本之间的水平间距
android:dropDownVerticalOffset:指定下拉菜单与文本之间的竖直间距
android:dropDownSelector:设置下拉菜单点击效果
android:popupBackground:设置下拉菜单的背景
MultiAutoCompleteTextView(多提示项的自动完成文本框) 和这个AutoCompleteTextView作用差不多

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,290评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,107评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,872评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,415评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,453评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,784评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,927评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,691评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,137评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,472评论 2 326
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,622评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,289评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,887评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,316评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,490评论 2 348

推荐阅读更多精彩内容