Android中所有的可视化组件都是继承自View类,通常把它们称之为视图。视图也经常被称为控件或者小组件。 ViewGroup类继承自View类,是对View类的扩展,它用来包含、管理多个视图。用户界面UI(User Interface)就是由一个个具体的View和ViewGroup构成的一颗视图树
在开始前,先要介绍下几个单位:dp(dip): device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关。px: pixels(像素). 不同设备显示效果相同。sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。
1、TextView(文字显示)
- id:为组件设置一个组件id,根据id,我们可以在Java代码中通过findViewById()的方法获取到该对象,然后进行相关属性的设置,或者通过R.id.得到组件。
- layout_width:组件的宽度,一般写:wrap_content或者match_parent(fill_parent),前者是控件显示的内容多大,控件就多大,而后者会填满该控件所在的父容器;当然也可以设置成特定的大小。
- layout_height:组件的高度,内容和layout_width相同。
- gravity:设置控件中内容的对齐方向,TextView中是文字,ImageView中是图片。
- text:设置显示的文本内容,一般我们是把字符串写到string.xml文件中,然后通过@String/xxx取得对应的字符串内容的。
- textColor:设置字体颜色,同上,通过colors.xml资源来引用!
- textStyle:设置字体风格,三个可选值:normal(无效果),bold(加粗),italic(斜体)
- textSize:字体大小,单位一般是用sp!
- background:控件的背景颜色,可以理解为填充整个控件的颜色,可以是图片哦!
- singleLine:自动换行。
带图片(drawableXxx)的TextView:设置图片的核心其实就是:drawableXxx;可以设置四个方向的图片: drawableTop(上),drawableButtom(下),drawableLeft(左),drawableRight(右)。 另外,你也可以使用drawablePadding来设置图片与文字间的间距。
2、ExitView(文本输入框)
- android:hint="默认提示文本" :提示文本
- android:textColorHint="#95A1AA":提示文本颜色
- android:selectAllOnFocus="true":获取焦点
- android:inputType="text":输入类型(文本、数字、密码)
-
android:inputType="phone"//拨号键盘
-
android:inputType="datetime"
-
android:inputType="date"//日期键盘
-
android:inputType="time"//时间键盘
-
android:singleLine="true":多行输入
-
android:marginXXX = "5dp 间隔多少
edit.requestFocus(); //请求获取焦点
edit.clearFocus(); //清除焦点
3、Button按钮:
- drawable:引用的Drawable位图,我们可以把他放到最前面,就表示组件的正常状态~
- state_focused:是否获得焦点
- state_window_focused:是否获得窗口焦点
- state_enabled:控件是否可用
- state_checkable:控件可否被勾选,eg:checkbox
- state_checked:控件是否被勾选
- state_selected:控件是否被选择,针对有滚轮的情况
- state_pressed:控件是否被按下
- state_active:控件是否处于活动状态,eg:slidingTab
- state_single:控件包含多个子控件时,确定是否只显示一个子控件
- state_first:控件包含多个子控件时,确定第一个子控件是否处于显示状态
- state_middle:控件包含多个子控件时,确定中间一个子控件是否处于显示状态
- state_last:控件包含多个子控件时,确定最后一个子控件是否处于显示状态
4、ImageView
ImageView有两个可以设置图片的属性,分别是:src和background
background通常指的都是背景,而src指的是内容,当使用src填入图片时,是按照图片大小直接填充,并不会进行拉伸,而使用background填入图片,则是会根据ImageView给定的宽度来进行拉伸
android:scaleType用于设置显示的图片如何缩放或者移动以适应ImageView的大小 Java代码中可以通过imageView.setScaleType(ImageView.ScaleType.CENTER);来设置~ 可选值如下:
- fitXY:对图像的横向与纵向进行独立缩放,使得该图片完全适应ImageView,但是图片的横纵比可能会发生改变
- fitStart:保持纵横比缩放图片,知道较长的边与Image的编程相等,缩放完成后将图片放在ImageView的左上角
- fitCenter:同上,缩放后放于中间;
- fitEnd:同上,缩放后放于右下角;
- center:保持原图的大小,显示在ImageView的中心。当原图的size大于ImageView的size,超过部分裁剪处理。
- centerCrop:保持横纵比缩放图片,知道完全覆盖ImageView,可能会出现图片的显示不完全
- centerInside:保持横纵比缩放图片,直到ImageView能够完全地显示图片
- matrix:默认值,不改变原图的大小,从ImageView的左上角开始绘制原图, 原图超过ImageView的部分作裁剪处理
5、RadioButton(单选按钮)
需要把RadioButton放到RadioGroup按钮组中,从而实现 单选功能,为外层RadioGroup设置orientation属性然后设置RadioButton的排列方式,是竖直还是水平。要为每个RadioButton添加一个id,不然单选功能会生效!!!
- getChildCount( )获得按钮组中的单选按钮的数目;
- getChinldAt(i):根据索引值获取我们的单选按钮
- isChecked( ):判断按钮是否选中
6、CheckBox(复选框)
可以同时选中多个选项,至于获得选中的值,同样有两种方式: 1.为每个CheckBox添加事件:setOnCheckedChangeListener 2.弄一个按钮,在点击后,对每个checkbox进行判断:isChecked();
7、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:滑块的图片
设置自定义的switch开关代码示例:
1、新建switch_selected_track.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size android:height="40dp" />
<corners android:radius="20dp" />
<solid android:color="#00C653" />
</shape>
2、新建switch_unselected_track.xml文件
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<size android:height="40dp"/>
<corners android:radius="20dp"/>
<solid android:color="#D9D9D9" />
</shape>
3、新建switch_track.xml文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/switch_selected_track" android:state_checked="true" />
<item android:drawable="@drawable/switch_unselected_track" />
</selector>
4、新建switch_thumb.xml文件
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<!-- 滑动块的宽高 -->
<size
android:width="40dp"
android:height="40dp" />
<solid android:color="#FFFFFF" />
<!-- 透明的描边-->
<stroke
android:width="5dp"
android:color="@android:color/transparent" />
</shape>
5、使用组件:
<Switch
android:id="@+id/light_switch"
android:layout_width="140dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:checked="@{data.lightData.state}"
android:switchMinWidth="40dp"
android:text="@string/lightswitch"
android:thumb="@drawable/switch_thumb"
android:track="@drawable/switch_track" />