用过很多控件,但是具体细节上还是很缺乏。今天看到书里面提到的东西还蛮详细的,所以就记录下来。
1.TestView(疯狂android讲义 61页)
①android:autoLink setAutoLinkMask(int) 是否将符合指定格式的文本转换为可单击的超链接形式
none 不设置任何超链接
web 对应于Linkify.WEB_URLS
email对应于Linkify.EMAIL_ADDRESSES
phone对应于Linkify.PHONE_NUMBERS
map 对应于Linkify.MAP_ADDRESSES
all 相当于指定web|email|phone|map
②android:hint setHint(int) 设置当该文本框内容为空时,文本框内默认显示的提示文本
③android:singleLine setTransformationMethod 设置该文本框是否为单行模式,如果设为true,文本框不会换行。
④android:ellipsize 设置当显示的文本超过了TextView的长度时如何处理文本内容。
none 不进行任何处理
start在文本开头部分进行省略
middle在文本中间部分进行省略
end 在文本结尾处进行省略
marquee在文本结尾处以淡出的方式进行省略
2.ImageView(89页)
①android:scaleType setScaleType(ImageView.ScaleType) 设置所显示的图片如何缩放或移动以适应ImageView的大小
可指定如下属性:
matrix(ImageView.ScaleType.MATRIX)以matrix方式缩放。
fitXY (ImageView.ScaleType.FIT_XY)对图片横向、纵向独立缩放,使得该图片完全适应于该ImageView,图片的纵横比可能会改变。
fitSatrt(ImageView.ScaleType.FIT_START)保持纵横比缩放,直到该图片能完全显示在ImageView中(图片较长的边长与ImageView相对应的边长相等)。缩放完成后将该图片放在ImageView的左上角。
fitCenter(ImageView.ScaleType.FIT_CENTER)保持纵横比缩放,直到该图片能完全显示在ImageView中(图片较长的边长与ImageView相对应的边长相等)。缩放完成后将该图片放在ImageView的中央。
fitEnd(ImageView.ScaleType.FIT_END)保持纵横比缩放,直到该图片能完全显示在ImageView中(图片较长的边长与ImageView相对应的边长相等)。缩放完成后将该图片放在ImageView的右下角。
center(ImageView.ScaleType.CENTER)把图片放在ImageView的中间,但不进行任何缩放。
centerCrop(ImageView.ScaleType.CENTER_CROP)保持纵横比缩放图片,以使得图片能完全覆盖ImageView。
centerInside(ImageView.ScaleType.CENTER_INSIDE)保持纵横比缩放图片,以使得ImageView能完全显示该图片。
3.ProgressBar
①Android支持几种风格的进度条,通过style属性可以为ProgressBar指定风格。该属性可以支持如下几个属性值:
@android:style/Widget.ProgressBar.Horizontal:水平进度条
@android:style/Widget.ProgressBar.Inverse:不断跳跃旋转画面的进度条
@android:style/Widget.ProgressBar.Large:大进度条
@android:style/Widget.ProgressBar.Large.Inverse:不断跳跃旋转画面的大进度条
@android:style/Widget.ProgressBar.Small:小进度条
@android:style/Widget.ProgressBar.Small.Inverse:不断跳跃旋转画面的小进度条
ProgressBar常用的XML属性
android:max 设置该进度条的最大值
android:progress 设置该进度条的已完成进度值
android:progressDrawable 设置该进度条的轨道的绘制形式
android:progressBarStyle 默认进度条样式
android:progressBarStyleHorizontal 水平进度条样式
android:progressBarStyleLarge 大进度条样式
android:progressBarStyleSmall 小进度条样式
- <ProgressBar
- android:id="@+id/bar"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:max="100"
- style="@android:style/Widget.ProgressBar.Horizontal"
- />
②android:progressDrawable 用于指定进度条的轨道的绘制形式,该属性可以指定为一个LayerDrawable对象(该对象可通过在XML文件中用<layer-list>元素进行配置)的引用。
- <ProgressBar
- android:id="@+id/bar2"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:max="100"
- android:progressDrawable="@drawable/my_bar"
- style="@android:style/Widget.ProgressBar.Horizontal"
- />
my_bar.xml
- <?xml version="1.0" encoding="utf-8"?>
- <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
- <!-- 定义轨道的背景 -->
- <item android:id="@android:id/background"
- android:drawable="@drawable/no"
- />
- <!-- 定义轨道上已完成部分的样式-->
- <item android:id="@android:id/progress"
- android:drawable="@drawable/ok"></item>
- </layer-list>
background和progress是系统定义好了的。只需要将名字为ok和no的图片添加即可。
setProgress(int) 设置进度的完成百分比
incrementProgressBy(int) 设置进度条的进度增加或减少。当参数为正数时进度增加;当参数为负数时进度减少。
例子①:利用Handler机制
- package com.example.progressbardemo;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.R.integer;
- import android.app.Activity;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.widget.ProgressBar;
- import android.support.v4.app.NavUtils;
- public class ProgressBarActivity extends Activity {
- //该程序模拟填充长度为100的数组
- private int[] data = new int[100];
- int hasData = 0;
- //记录ProgressBar的完成进度
- int mProgressStatus = 0;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_progress_bar);
- final ProgressBar bar = (ProgressBar)findViewById(R.id.bar);
- final ProgressBar bar2 = (ProgressBar)findViewById(R.id.bar2);
- //创建一个负责更新进度的Handler
- final Handler handler = new Handler(){
- @Override
- public void handleMessage(Message msg) {
- //表明消息是由该程序发送的
- if(msg.what==0x111){
- bar.setProgress(mProgressStatus);
- bar2.setProgress(mProgressStatus);
- }
- }
- };
- new Thread(){
- @Override
- public void run() {
- while(mProgressStatus<100){
- //获取耗时操作的完成百分比
- mProgressStatus = doWork();
- //发送消息到Handler
- Message msg = new Message();
- msg.what = 0x111;
- handler.sendMessage(msg);
- }
- }
- }.start();
- }
- private int doWork() {
- data[hasData++] = (int)(Math.random()*100);
- try{
- Thread.sleep(1000);
- }catch (InterruptedException e) {
- e.printStackTrace();
- }
- return hasData;
- }
- }
效果图:
例子②:还有一种进度条可以直接在窗口标题上,这种进度条不需要ProgressBar组件,它是直接有Activity的方法启用的。利用了Activity的requestWindowFeature()方法,传入参数为Window.FEATRUE_INDETERMINATE_PROGRESS(不带进度的进度条)和Window.FEATURE_PROGRESS(带进度的进度条)。调用Activity的setProgressBarVisibility(boolean)和setProgressBarIndeterminateVisibility(boolean)方法控制进度条的显示和隐藏。
- package com.example.progressbardemo;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.view.Window;
- import android.widget.Button;
- public class TitleProgressBar extends Activity{
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- //设置窗口特征:启用显示进度的进度条
- requestWindowFeature(Window.FEATURE_PROGRESS);
- //设置窗口特征:启用不显示进度的进度条
- // requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
- setContentView(R.layout.titlebar);
- Button show = (Button)findViewById(R.id.show);
- Button hide = (Button)findViewById(R.id.hide);
- show.setOnClickListener(new Button.OnClickListener() {
- @Override
- public void onClick(View v) {
- //显示不带进度的进度条
- setProgressBarIndeterminate(true);
- //显示带进度的进度条
- setProgressBarVisibility(true);
- //设置进度条的进度
- setProgress(4500);
- }
- });
- hide.setOnClickListener(new Button.OnClickListener() {
- @Override
- public void onClick(View v) {
- //隐藏不带进度的进度条
- setProgressBarIndeterminate(false);
- setProgressBarVisibility(false);
- }
- });
- }
- }
效果图:
4.SeekBar:
android:thumb 指定一个Drawable对象,该对象将作为自定义滑块。
5.RatingBar
android:numStars="5"设置星级数(布局一定要设为wrap_content)
android:isIndicator 设置该星级评分条是否允许用户改变
android:numStars 设置该星级评分条总共有多少个星级
android:rating 设置该星期评分条默认的星级
android:stepSize 设置每次最少需要改变多少个星级
6.列表的选项(默认值)
simple_list_item_1:其中为一个TextView。
simple_list_item_2:包含两个TextView。并且在TwoLineListItem(类似于RelativeLayout,有例子在代码中)布局内。
simple_list_item_checked:每个列表项都是一个已勾选的列表项。
simple_list_item_multiple_choice:每个列表项都是带多选框的文本。
simple_list_item_single_choice:每个列表项都是带多单选按钮的文本。
7.ListView
ListActivity的默认布局是由一个位于屏幕中心的列表组成的。实际上,开发者完全可以在onCreate()方法中通过setContentView(int layoutId)方法设置用户的自定义的布局。但是在开发者指定的界面布局文件中应该包含一个id为"@+id/android:list"(代码形式为android.R.id.list)的ListView。
8.GridView
android:numColumns设置列数,该属性默认值为1,则变成ListView。
android:stretchMode设置拉伸模式:
NO_STRETCH:不拉伸
STRETCH_SPACING:仅拉伸元素表格元素本身
STRETCH_SPACING_UNIFORM:表格元素本身、元素之间的间距一起拉伸
STRETCH_COLUMN_WIDTH:仅拉伸元素表格元素本身。
9.ImageSwitcher
和ImageView很相似,它们都可用于显示图片,但ImageSwitcher比普通ImageView多一个功能:它所显示的图片切换时可以设置动画效果。
10.Gallery
android:spacing:设置Gallery内列表项之间的距离