一、AutoCompleteTextView和Spinner
activity_main.xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10pt"
android:text="自动完成文本框" />
<AutoCompleteTextView
android:id="@+id/textView"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:soundEffectsEnabled="true"
android:background="#ff9999"
android:hint="请输入刘"
android:completionThreshold="1"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Spinner
android:id="@+id/spinnerfirst"
android:layout_width="100dp"
android:layout_height="40dp"
android:entries="@array/names" />
<Spinner
android:id="@+id/spinnersecond"
android:layout_width="100dp"
android:layout_height="40dp"/>
</LinearLayout>
</LinearLayout>
completelist.xml文件:为自动完成文本框的每一列提供布局,很简单,只有一个TextView
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/line"
android:layout_width="fill_parent"
android:background="#9ff999"
android:layout_height="30dp" />
MainActivity.java文件:
package com.example.autocompletetextviewtest;
/**
* @CopyRight qiao
*/
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Spinner;
import android.widget.Toast;
public class MainActivity extends Activity {
private Spinner spFirst;
private Spinner spSecond;
private AutoCompleteTextView actv = null;
private String[] names = new String[]{
"刘德华",
"刘涛",
"刘亦菲",
"刘关张",
"刘小菲"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//自动完成文本框的列适配数据
ArrayAdapter<String> aa = new ArrayAdapter<String>(this,R.layout.completelist,names);
//实例化自动完后文本框
actv = (AutoCompleteTextView)findViewById(R.id.textView);
//为文本框设置适配数据
actv.setAdapter(aa);
//设置第二下拉列表的数据适配器,注意与这种情况与第一个下拉列表实现方式的不同
//第一个参数时上下文对象,第二个参数时字符串资源数组,第三个参数时样式(采用系统提供)
ArrayAdapter<CharSequence> spaa = ArrayAdapter.createFromResource(this,R.array.names,android.R.layout.simple_spinner_item);
//设置每个下拉列表项的布局,此处采用的android系统提供的布局文件
spaa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spSecond = (Spinner)findViewById(R.id.spinnersecond);
//为第二个下拉列表设置数据适配器
spSecond.setAdapter(spaa);
spFirst = (Spinner)findViewById(R.id.spinnerfirst);
//为第一个下拉列表注册选择项监听器
spFirst.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
//AdapterView是下拉列表对象,getItemAtPosition可以得到当前选择的项(编号是arg2)
Toast.makeText(MainActivity.this, "你选择了"+arg0.getItemAtPosition(arg2).toString(),Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
//未实现
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
运行效果:
二、DatePicker和TimerPicker
activity_main.xml布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10pt"
android:text="拖动条和评分条" />
<SeekBar
android:id="@+id/seekbar"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="22dp" />
<RatingBar
android:id="@+id/ratingbar"
android:numStars="5"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_alignLeft="@+id/seekbar"
android:layout_below="@+id/seekbar"/>
</RelativeLayout>
MainActivity.java文件:
package com.example.datapickertest;
import java.util.Calendar;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.Toast;
public class MainActivity extends Activity {
private DatePicker dp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dp = (DatePicker)findViewById(R.id.datepicker);
//得到当前系统时间
Calendar c = Calendar.getInstance();
//把时间选择器的初始日期设置为系统当前日期
dp.init(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), new OnDateChangedListener(){
@Override
public void onDateChanged(DatePicker view, int year,int monthOfYear, int dayOfMonth) {
Toast.makeText(MainActivity.this, "Your Birthday is "+year+"/"+monthOfYear+"/"+dayOfMonth, Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
运行效果:
三、SeekBar和RatingBar
activity_main.xml布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10pt"
android:text="拖动条和评分条" />
<SeekBar
android:id="@+id/seekbar"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="22dp" />
<RatingBar
android:id="@+id/ratingbar"
android:numStars="5"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_alignLeft="@+id/seekbar"
android:layout_below="@+id/seekbar"/>
</RelativeLayout>
MainActivity.java文件:
package com.example.seekbartest;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.Toast;
public class MainActivity extends Activity {
private SeekBar sb;
private RatingBar rb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化拖动条
sb = (SeekBar)findViewById(R.id.seekbar);
//实例化评分条
rb = (RatingBar)findViewById(R.id.ratingbar);
//为拖动条设置状态改变监听器
sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//停止拖动时调用该方法
Toast.makeText(MainActivity.this, "拖动条的值为:"+seekBar.getProgress(), Toast.LENGTH_LONG).show();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
//开始拖动时调用该方法
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
//拖动条的值改变时调用该方法
}
});
//为评分条设置匿名内部类监听器
rb.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating,boolean fromUser) {
Toast.makeText(MainActivity.this , "评分条的值为:"+rating,Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
运行效果:
四、TabHost
activity_main.xml布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<TabHost
android:id="@+id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<TextView
android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12pt"
android:text="第一个分页" />
<TextView
android:id="@+id/textview2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12pt"
android:text="第二个分页" />
<TextView
android:id="@+id/textview3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12pt"
android:text="第三个分页" />
<TextView
android:id="@+id/textview4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12pt"
android:text="第四个分页" />
</FrameLayout>
</LinearLayout>
</TabHost>
</LinearLayout>
MainActivity.java文件:
package com.example.tabhosttest;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.Toast;
public class MainActivity extends Activity {
private TabHost th;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化TabHost对象
th = (TabHost)findViewById(R.id.tabhost);
th.setup();
th.addTab(th.newTabSpec("tab1").setIndicator("文件").setContent(R.id.textview1));
th.addTab(th.newTabSpec("tab2").setIndicator("分类").setContent(R.id.textview2));
th.addTab(th.newTabSpec("tab3").setIndicator("精品").setContent(R.id.textview3));
th.addTab(th.newTabSpec("tab4").setIndicator("下载").setContent(R.id.textview4));
//设置监听器
th.setOnTabChangedListener(new OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
Toast.makeText(MainActivity.this, "你选择个Tab: "+th.getCurrentTabTag(), Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
运行效果: