android:id
:控件被分配一个资源id,便于以后可以直接在一个Activity程序中使用。+ 表示系统自动在R.java中生成相应的id。android:layout_width
:定义控件宽度 。android:layout_height
:定义控件高度。android:maxLength
:控件显示内容的最大字符长度。android:gravity
:控制文本在控件里的显示位置。android:textStyle
:设置文字的显示风格 normal:正常;bold:粗体;italic:斜体。android:textSize
:设置文字的大小。android:textColor
:设置文字的颜色,十六进制表示。android:typeface
:设置TextView的文本字体。android:padding
:控件显示的文字内容与控件边界的距离。android:layout_margin
:本控件与其它相邻控件及父控件上下左右的距离。android:drawableRight
:图片文件名。文本框右边绘制图片。android:background
:背景图片名。android:password
:设置密码框 android:inputType=“textPassword” 也可以达到密码效果。android:shadowColor
阴影颜色。android:shadowDx
阴影的水平偏移量。android:shadowDy
阴影的垂直偏移量。android:shadowRadius
阴影的半径,即阴影的范围。android:autoLink
设置是否当文本超链接。可选值(none/web/email/phone/map/all)。android:ellipsize
当TextView中要显示的内容超过了TextView的长度时,会对内容进行省略,该属性设置显示的方式。start 省略号显示在开头;end 省略号显示在结尾;middle省略号显示在中间;android:lines=“1” 单行 ”marquee” 以跑马灯的方式显示(动画横向移动)。android:marqueeRepeatLimit
在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为marquee_forever时表示无限次。android:focusableInTouchMode
:是否在触摸模式下获得焦点,实现跑马灯效果时需要设置为true。android:focusable
控件是否能够获取焦点,实现跑马灯效果时需要设置为true。//通过ID引用界面上的任何控件,只要该控件在XML文件中定义过ID即可
TextView textView = (TextView)findViewById(R.id.TextView01);
//调方法,设置TextView所显示的内容
textView.setText("用户名:");
<resources>
<style name=“样式名称” parent=“父样式表”>
- 属性内容
style>
<style name=“样式名称” parent=“父样式表”>
style>
resources>
style=“@style/样式名”
<shape xmlns:android=“http://schemas.android.com/apk/res/android” >
<corners ... />
<gradient ... />
<padding ... />
<size ... />
<solid android:color="color" />
<stroke ... />
shape>
android:shape=["rectangle" | "oval" | "line" | "ring"]
shape的形状,默认为矩形,可以设置为矩形、椭圆、线性、环形。android:innerRadius =“50dp”
:尺寸,内环的半径。android:innerRadiusRatio
:浮点型,内环的厚度比(一般不用)android:thickness =“100dp”
:尺寸,环的厚度android:thicknessRatio
:浮点型,环的厚度比(一般不用)android:useLevel =“false”
:boolean值,一般为false,如果当做是LevelListDrawable使用时值为true. //右下角的圆角半径
corners标签是用来定义圆角的,其中radius与其它四个并不能共同使用
false才有效果
//虚线的间隔
public void afterTextChanged(Editable s) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
//该方法位于监听类内的方法。
public void addTextChangedListener(TextWatcher watcher)
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=“我爱Android"
android:layout_marginTop="10px"
android:maxLength="3"/>
LinearLayout>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@mipmap/btn_down" />
<item android:drawable="@mipmap/btn_up" />
selector>
android:background="@drawable/bt"
在布局文件中,为Button控件设置OnCilck属性,然后在代码中添加一个public void 属性值(View view){}方法,这个方法必须是public的,并且只有一个View参数。
EditText et=(EditText) findViewById(R.id.edit)
Button bt=(Button)findViewById(R.id.bn);
bt. setOnClickListener(new OnClickListener(){
public void onClick(View v){
et.setText("Button Pressed: " + i);
i++;
}
});
static Toast makeText(Context context, int resId, int duration)
context是toast显示在哪个作用域,通常是当前Activity;
resId指显示内容,使用string.xml中定义的显示的消息内容,通过R.java来引用;
duration指定显示时间,Toast默认有LENGTH_SHORT和LENGTH_LONG两常量,分别表示短时间显示和长时间显示。
static Toast makeText(Context context, CharSequence text, int duration)
参数context和duration与第一个方法相同,参数text是消息内容。
用上面任意方法创建Toast对象之后调用方法 show() 即可显示。
public void setGravity(int gravity, int xOffset, int yOffset)
三个参数分别表示(起点位置,水平向右位移,垂直向下位移)
例:
tsToast.setGravity(Gravity.CENTER, 0, 0);
继承结构如下:
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.Button
↳ android.widget.CompoundButton
↳ android.widget.CheckBox
<LinearLayout 定义线型布局管理器
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 所有组件垂直摆放
android:layout_width="fill_parent" 布局管理器宽度为屏幕宽度
android:layout_height="fill_parent"> 布局管理器高度为屏幕高度
<CheckBox 定义复选框
android:id="@+id/url1" 此组件ID,程序中使用
android:text="www.mldn.cn" 组件的显示文字
android:layout_width=“fill_parent” 组件的宽度为父控件宽度
android:layout_height="wrap_content"/> 组件的高度为文字高度
<CheckBox 定义复选框
android:id="@+id/url2" 此组件ID,程序中使用
android:text="bbs.mldn.cn" 组件的显示文字
android:layout_width=“fill_parent” 组件的宽度为父控件宽度
android:layout_height="wrap_content" 组件的高度为文字高度
android:checked="true" /> 设置为默认选中
LinearLayout>
Java代码中的常用方法
public boolean isChecked():确定复选框是否被选中。
public void setChecked(boolean checked):设置默认选中
public void toggle():切换复选框的选中和未选中状态
OnCheckedChangeListener接口
,实现回调方法onCheckedChanged ()
。事件绑定方法:
public void setOnCheckedChangeListener (CompoundButton.OnCheckedChangeListener listener)
ImageView是一个图片控件,负责显示图片。
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.LinearLayout
↳ android.widget.RadioGroup
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.Button
↳ android.widget.CompoundButton
↳ android.widget.RadioButton
<LinearLayout 定义线型布局管理器
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 所有组件垂直摆放
android:layout_width="fill_parent" 布局管理器宽度为屏幕宽度
android:layout_height="fill_parent"> 布局管理器高度为屏幕高度
<RadioGroup 定义一个单选组
android:id="@+id/encoding" 此单选组的ID,程序中使用
android:layout_width="fill_parent" 此组单选钮宽度为屏幕宽度
android:layout_height="wrap_content" 此组单选钮高度为文字高度
android:orientation="vertical" 单选按钮为垂直排列
android:checkedButton="@id/gbk"> 默认选中ID为“gbk”的按钮
<RadioButton 定义一个选项钮
android:id="@+id/utf" 此选项钮的ID
android:text="UTF编码"/> 此选项钮的显示文字
<RadioButton 定义一个选项钮
android:id="@+id/gbk" 此选项钮的ID
android:text="GBK编码"/> 此选项钮的显示文字
RadioGroup>
LinearLayout>
RadioGroup
添加监听事件, 实现接口 RadioGroup.OnCheckedChangeListener, 通过该接口来实现对一组RadioButton的监听工作,实现onCheckedChanged方法:public void onCheckedChanged(RadioGroup group, int checkedId)
第一个参数:状态发生改变的RadioGroup
第二个参数checkedId,表示当前被选中的RadioButton的ID。
绑定方法为:setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener)。
genderGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkid) {
if (checkid ==R.id.femaleRadio) {
Toast.makeText(MyActivity.this, "I am female.", Toast.LENGTH_SHORT).show();
} else if (checkid ==R.id.maleRadio) {
Toast.makeText(MyActivity.this, "I am male.", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MyActivity.this, "Unknown", Toast.LENGTH_SHORT).show();
}
}
});
ImageButton控件中,设置按钮显示的图片可以通过android:src
属性,也可以通过setImageResource(int)
方法来设置。
进度条控件,有圆形进度条和水平进度条,继承结构如下:
java.lang.Object
↳ android.view.View
↳ android.widget.ProgressBar
style="@android:style/Widget.ProgressBar.Small" //小型圆形进度条
style="@android:style/Widget.ProgressBar.Small.Inverse" //小型圆形进度条
style="@android:style/Widget.ProgressBar.Inverse" //中型圆形进度条
style="@android:style/Widget.ProgressBar.Large" //大型圆形进度条
style="@android:style/Widget.ProgressBar.Large.Inverse" //大型圆形进度条
style="@android:style/Widget.ProgressBar.Horizontal" //水平进度条
设置水平进度条
style="?android:attr/progressBarStyleHorizontal“
设置旋转进度条
style="?android:attr/progressBarStyleLarge“
style="?android:attr/progressBarStyle“
style="?android:attr/progressBarStyleSmall"
android:max:设置进度条的最大值
android:progress:定义缺省进度值,在0~MAX之间
android:secondaryProgress:定义第二进度值
android:visibility:设置进度条的可见性
View.VISIBLE:设置进度条可见
View.INVISIBLE:不可见,但这个View仍然会占用在xml文件中所分配的布局空间,不重新layout
View.GONE:设置进度条不可见,不占布局空间
int getMax():返回这个进度条的范围的上限
void setMax(int max):设置进度条的最大值
int getProgress():返回进度
viod setProgress(int progress):设置进度
int getSecondaryProgress():返回第二进度
void setSecondaryProgress(int secondaryProgress):设置第二进度
void incrementProgressBy(int diff):指定增加的进度
void setVisibility(int v):设置该进度条是否可视
下拉列表框,继承结构如下:
java.lang.Object
↳android.view.View
↳android.view.ViewGroup
↳android.widget.AdapterView<T extends android.widget.Adapter>
↳android.widget.AbsSpinner
↳android.widget.Spinner
Step1:在布局文件中定义一个空的Spinner;
Step2:在values文件夹中定义有关Spinner内容的资源文件,例:
Step3:在Spinner元素中增加属性entries。例: android:entries=“@array/city_label”
public void onItemSelected(AdapterView<?> parent, View view,int position, long id)//选项被选中时触发该方法
AdapterView:选项被选中的视图列表
view:当前选中的item选项
position:被选中的item选项在视图中的位置
id:被选中item选项的id
public void onNothingSelected(AdapterView<?> parent)//没有选项时触发
Spinner类中绑定事件监听的方法:
setOnItemSelectedListener(OnItemSelectedListener)
为Spinner控件设置列表项。
Step1:在values文件夹中定义数据文件;
Step2:将该数据文件封装进ArrayAdapter类的对象中;
Step3:将Spinner绑定该Adapter对象。
Step1:创建List集合对象,定义数据;
Step2:将该List对象封装进ArrayAdapter类的对象中;
Step3:将Spinner绑定该Adapter对象。
向用户提供包含年、月、日的日期数据并允许用户对其进行修改。
继承结构如下:
java.lang.Object
↳android.view.View
↳android.view.ViewGroup
↳android.widget.FrameLayout
↳android.widget.DatePicker
<LinearLayout 定义线型布局管理器
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 所有控件垂直摆放
android:layout_width="fill_parent" 布局管理器宽度为屏幕宽度
android:layout_height="fill_parent"> 布局管理器高度为屏幕高度
<DatePicker 定义日期选择器
android:id="@+id/dp1" 控件ID,程序中使用
android:layout_width="wrap_content" 控件宽度为显示宽度
android:layout_height="wrap_content" /> 控件高度为显示高度
<DatePicker 定义日期选择器
android:id="@+id/dp2" 控件ID,程序中使用
android:layout_width="wrap_content" 控件宽度为显示宽度
android:layout_height="wrap_content" /> 控件高度为显示高度
LinearLayout>
public class MyDatePickerDemo extends Activity {
private DatePicker mydp = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.setContentView(R.layout.main);
this.mydp = (DatePicker) super.findViewById(R.id.dp2);//取得日期选择器
this.mydp.updateDate(1998, 7, 27) ; // 设置一个默认日期
}
}
android:datePickerMode=“spinner”(或者calendar)
如果是spinner,需要加属性:android:calendarViewShown="false"
。需要为DatePicker添加onDateChangedListener
监听器,实现OnDateChangeListner()
方法。
public abstract void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
//view 与监听器关联的视图。
//year 用户设置的年。
//monthOfYear 用户设置的月份(0-11),与Calendar兼容。
//dayOfMonth 用户设置的日期。
控件绑定监听器时使用init()
方法。
public void init (int year, int monthOfYear, int dayOfMonth, DatePicker.OnDateChangedListener)
//year 初始年
//monthOfYear 初始月。
//dayOfMonth 初始日。
//onDateChangedListener:监听器对象,日期改变时通知用户的事件监听,负责监听日期数据的变化。
向用户显示一天中的时间(可以为24小时制,也可以为AM/PM),并允许用户进行选择。
继承结构如下:
java.lang.Object
↳android.view.View
↳android.view.ViewGroup
↳android.widget.FrameLayout
↳android.widget.TimePicker
<LinearLayout 定义线型布局管理器
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 所有控件垂直摆放
android:layout_width="fill_parent" 布局管理器宽度为屏幕宽度
android:layout_height="fill_parent"> 布局管理器高度为屏幕高度
<TimePicker 定义时间控件
android:id="@+id/tp1" 定义控件ID,程序中使用
android:layout_width="wrap_content" 控件宽度为显示宽度
android:layout_height="wrap_content“ 控件高度为显示高度
android:timePickerMode="spinner"
/>
LinearLayout>
需要为TimePicker添加OnTimeChangedListener
监听器,实现onTimeChanged()
方法。
public abstract void onTimeChanged (TimePicker view, int hourOfDay, int minute)
//View:与监听相关的视图。
//hourOfDay:当前小时
//Minute:当前分钟
setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
。。。。。。。
}
});
)
消息弹框。
其中Toast和AlertDialog直接在Java中创建,不需要在布局文件中创建。
setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener)
这是一个相当于OK、确定操作的按钮setNegativeButton (CharSequence text, DialogInterface.OnClickListener listener)
这是一个相当于取消操作的按钮。setNeutralButton (CharSequence text, DialogInterface.OnClickListener listener)
这个是相当于一个忽略操作的按钮。java.lang.Object
↳android.view.View
↳android.view.ViewGroup
↳android.widget.AdapterView<T extends android.widget.Adapter>
↳android.widget.AbsListView
↳android.widget.ListView
ListView的创建方式有两种:
布局文件中:
android:entries="@array/books“
strings.xml中:
<string-array name="books">
<item>疯狂Android讲义item>
<item>疯狂Java讲义item>
<item>疯狂J2EE讲义item>
string-array>
public ArrayAdapter (Context context, int resource, T[] objects)
//第一个参数:上下文
//第二个参数:每行列表项(TextView)外观样式。Android为其提供如下属性样式,或者自己定义一个TextView的布局文件
//simple_list_item_1:每个列表项都是一个普通的textView
//simple_list_item_2:每个列表项都是一个普通的textView(字体略大)
//simple_list_item_checked:每个列表项都是一个已勾选的列表项
//simple_list_item_multiple_choice:每个列表项都是带多选框的文本
//simple_list_item_single_choice:每个列表项都是带单选框的文本
//第三个参数:数据源(如:数组)。
创建步骤:
android:id=“@+id/android:list”的ListView
。SimpleAdapter构造函数是:
public SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
//第一个参数:context,SimpleAdapter所要运行关联到的视图,一般指当前的Activity;
//第二个参数:是个List集合对象,该集合中每个Map对象生成一个列表项;
//第三个参数:指定一个界面布局文件的id,即ListView里单个列表项的布局文件;
//第四个参数:是Map中键key,即当前的ListView里有几列(列名);
//第五个参数:第3个参数布局文件里ListView里需要显示的控件的id。
第一步:构建布局文件
根据每个列表项构建ListView里每一行的布局文件。
构建含ListView的布局文件。
在Activity文件中:
1.继承Activity
2.设定自定义的布局文件setContentView()
3.将ListView中每一行要显示的数据放入Map
4.创建一个List集合对象,集合元素是Map。
5.将Map对象放入List对象中list.add(map)
6.构建适配器 SimpleAdapter;
SimpleAdapter:可以自定义出各种效果。
构造函数是:
public SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
//第一个参数:context,SimpleAdapter所要运行关联到的视图,一般指当前的Activity;
//第二个参数:是个List集合对象,该集合中每个Map对象生成一个列表项;
//第三个参数:指定一个界面布局的id,即ListView里的布局文件;
//第四个参数:是Map中键key,即当前的ListView里有几列(列名),String数组里就应该有几个元素;
//第五个参数:第3个参数布局文件里ListView里需要显示的控件的id。
7.把适配器 添加到ListView,并显示出来。
两种方式:
调用ListActivity里的方法:
public void setListAdapter (ListAdapter adapter)
或者
创建该ListView对象,该对象调用其setAdapter(ListAdapter adapter)
OnItemClickListener
:监听器在点击该项目的子项时触发。
OnItemLongClickListener
:长按事件监听。
OnTouchListener
:监听器在触碰到ListView时触发。
OnScrollListener
:监听器在ListView滚动时触发。
OnItemClickListener
:监听器在点击该项目的子项时触发。
public void onListItemClick(ListView lv,View v,int position,long id)
//该方法是从ListActivity中继承而来,点击列表中列表项时会触发该方法。
//ListView lv:被点击列表项属于哪个ListView
//View v:被点击的item对象
//int position:被点击的item对象的位置
//long id:被点击的item对象的id