文本框(TextView)不允许用户编辑文本内容,而编辑框(EditText)允许用户编辑文本内容
Button显示文字,ImageButton显示图片。 为ImageButton指定android:text属性没用,不会显示文字 可以指定android:background为按钮增加背景图片,但这图片是固定的 可以指定android:src为图片按钮增加图片属性 其实,src才是设置图标,而background只是设置背景。 如果控件的大小是100*100 图片资源是80*80的话,那么用src,图片就会居中显示,如果使用background那么图片就会被拉伸充满控件。 重要的是,background是底层的图片资源,src是覆盖在background上面的资源,他们可以叠加使用,实现选中的效果。
多了一个android:checked属性,用于指定初始时是否被选中
checkBox.setOnCheckedChangeListener( new OnCheckedChangeListener(){
public void onCheckedChanged( CompoundButton buttonView, Boolean isChecked ){
if( checkbox.isChecked() ){
checkbox.getText();
}
}
} )
红色字体表示常用的方法
final Chronometer ch = (Chronometer)findViewById(R.id.test); //获取计时器组件
Button start = (Button)findViewById(R.id.start); //获取“开始”按钮
start.setOnClickListener(new OnClickListener(){
public void onClick(View source)
{
//设置开始计时时间
ch.setBase(SystemClock.elapsedRealtime());
//启动计时器
ch.start();
}
});
ch.setOnChronometerTickListener(new OnChronometerTickListener(){
public void onChronometerTick(Chronometer ch)
{
//如果从开始计时到现在超过了20s。
if(SystemClock.elapsedRealtime() - ch.getBase() > 20 * 1000)
ch.stop();
}
});
它支持属性android:scaleType setScaleType(ImageView.ScaleType)
如果可以确定spinner里面的列表项,那么直接在/res/layout/main.xml里面指定
<Spinner
……
android:entries=”@string/books”
/>
然后在/res/value/string.xml里面指定
<resources>
<string name="books">
<item>疯狂Java讲义</item>
<item>疯狂Ajax讲义</item>
<item>疯狂XML讲义</item>
</string-array>
</resources>
如果不确定里面的列表项,那么必须要提供一个Adapter,这个Adapter负责决定Spinner列表每项的内容
BaseAdapter ba = new BaseAdapter()
{
public int getCount(){ return 10; }
public Object getItem(int position){ return null; }
public long getItemId(int position){ return 0; }
//上面三个函数都是继承的虚函数
//重写该方法,该方法返回的View将作为列表框的每项
public View getView(int position, View convertView, ViewGroup parent)
{
//创建一个LinearLayout,并向其中添加组件
LinearLayout line = new LinearLayout(SpinnerTest2.this);
TextView text = new TextView(SpinnerTest2.this);
line.addView(text);
//返回LinearLayout实例
return line;
}
};
Spinner spinner = (Spinner)findViewById(R.id.test);
spinner.setAdapter(ba);
//获取当前的年、月、日、小时、分钟
Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
hour = c.get(Calendar.HOUR);
minute = c.get(Calendar.MINUTE);
//初始化DatePicker组件,初始化时指定监听器
datePicker.init(year , month ,day , new OnDateChangedListener()
{
@Override
public void onDateChanged(DatePicker arg0, int year, int month, int day)
{
ChooseDate.this.year = year;
ChooseDate.this.month = month;
ChooseDate.this.day = day;
//显示当前日期、时间
showDate(year, month , day , hour, minute);
}
});
//为TimePicker指定监听器
timePicker.setOnTimeChangedListener(new OnTimeChangedListener()
{
@Override
public void onTimeChanged(TimePicker arg0, int hour, int minute)
{
ChooseDate.this.hour = hour;
ChooseDate.this.minute = minute;
//显示当前日期、时间
showDate(year, month , day , hour, minute);
}
});
比普通文本框多了一个功能:当用户输入一定字符后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择某个菜单后,组件会按用户选择自动填写该文本框 使用该组件很简单,只要为它设置一个Adapter,该Adapter封装了AutoCompleteTextView预设的提示文本
//创建一个ArrayAdapter,封装数组
ArrayAdapter<String> aa = new ArrayAdapter<String>(
this,
android.R.layout.simple_dropdown_item_1line,
books); // books是String数组
AutoCompleteTextView actv = (AutoCompleteTextView)findViewById(R.id.auto);
//设置Adapter
actv.setAdapter(aa);
通过style属性可以为ProgressBar指定风格。该属性可以有如下的属性值:
ProgressBar提供如下方法来操作进度
实例:
public void onCreate(Bundle savedInstanceState)
{
final ProgressBar bar = (ProgressBar) findViewById(R.id.bar);
//创建一个负责更新的进度的Handler
final Handler mHandler = new Handler()
{
public void handleMessage(Message msg)
{
if (msg.what == 0x111)
bar.setProgress(status);
}
};
//启动线程来执行任务
new Thread()
{
public void run()
{
while (status < 100)
{
// 获取耗时操作的完成百分比
status = doWork();
// 发送消息到Handler
Message m = new Message();
m.what = 0x111;
// 发送消息
mHandler.sendMessage(m);
}
}
}.start();
}
//模拟一个耗时的操作。
public int doWork()
{
//为数组元素赋值
data[hasData++] = (int)(Math.random() * 100);
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
return hasData;
}
TabHost仅仅只是一个简单的容器,它提供如下方法
使用TabHost的一般步骤为:
选项卡主要由TabHost、TabWidget、FrameLayout3个组件组成,三者缺一不可,想象一下选项卡的特点,多个卡重叠在一起,所以用FrameLayout即帧布局是必要的。另外需要注意的是TabHost、TabWidget、FrameLayout三个组件的android:id必须使用系统默认的名称,而不能自己随意定义,否则会出错。
实例:
TabHost tabHost = getTabHost();或者findViewById也行,不过后面要有tabHost.setup();
//设置使用TabHost布局
LayoutInflater.from(this).inflate(R.layout.main, tabHost.getTabContentView(), true);
//添加第一个标签页
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("已接电话").setContent(R.id.tab01));
//添加第二个标签页,在标签标题上放置图标
tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("呼出电话" ,
getResources().getDrawable(R.drawable.icon)).setContent(R.id.tab02));
//添加第三个标签页
tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("未接电话").setContent(R.id.tab03));
is.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
is.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
is.setFactory(new ViewFactory(){
@Override
public View makeView() {
// TODO Auto-generated method stub
return iv;
}
});
使用GridView一般指定numColumn大于1,否则取默认值为1.那么GridView就变成了ListView 属性android:stretchMode支持如下属性
Gallery用法很简单——为它提供一个内容Adapter,该Adapter的getView方法所返回的View可作为Gallery的列表项。可以通过OnItemSelectedListener监听选择项的改变
创建ListView由两种方式:
一旦获得ListView后,就要创建显示的列表项了。需要借助内容Adapter,内容Adapter负责提供需要显示的列表项
ListView list2 = (ListView)findViewById(R.id.list2);
//定义一个数组
String[] arr ={"孙悟空" , "猪八戒" , "牛魔王"};
//将数组包装ArrayAdapter
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this , android.R.layout.simple_list_item_1 , arr);
//为ListView设置Adapter
list2.setAdapter(arrayAdapter);
创建ArrayAdapter时必须指定一个textViewResourceId,该参数决定每个列表项的外观
AlertDialog ad = new AlertDialog.Builder(MainActivity.this).create();
ad.setIcon(R.drawable.a);
ad.setTitle("系统提示: ");
ad.setMessage("带取消、中立和确定按钮的对话框!");
ad.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "。。。", Toast.LENGTH_SHORT).show();
}
});
});
ad.show();
步骤如下:
Toast toast = Toast.makeText(ToastTest.this, "信息", Toast.LENGTH_LONG).show();
使用Notification发送Notification步骤:
final NotificationManager nM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notify = new Notification(R.drawable.<id>, “显示通知”, System.currentTimeMillis());
nM.notify(NOTIFY,notify); //NOTIFY是一个自己定义的ID