Android(4)常用控件

来源:互联网 发布:淘宝网产品销量排名 编辑:程序博客网 时间:2024/06/18 11:31

1 RadioGroup、Checkbox、Toast


layout文件:

<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/label"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="Type here:" />    <RadioGroup         android:id="@+id/genderGroup"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/label"        android:orientation="horizontal"        >        <RadioButton             android:id="@+id/femaleButton"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="female"android:button="@null"            android:drawableRight="@android:drawable/btn_radio"            />  <!-- 选定按钮放在右侧 -->        <RadioButton             android:id="@+id/maleButton"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="male"            />    </RadioGroup>        <CheckBox         android:id="@+id/swim"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="swim"        android:layout_below="@id/genderGroup"        android:layout_alignParentRight="true"        />        <CheckBox         android:id="@+id/run"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="run"        android:layout_toLeftOf="@id/swim"        android:layout_alignTop="@id/swim"        />    </RelativeLayout>

为radioGroup和checkbox添加监听器:

protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                genderGroup = (RadioGroup) findViewById(R.id.genderGroup);                genderGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup rg, int chId) {// -----Toast的用法Toast.makeText(MainActivity.this, "female", Toast.LENGTH_SHORT).show();}});                        ((CheckBox)findViewById(R.id.run)).setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton arg0, boolean arg1) {System.out.println(arg1);}});            }

2 ProgressBar


layout.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/label"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="Type here:" />    <ProgressBar         android:id="@+id/firstbar"        style="?android:attr/progressBarStyleHorizontal"        android:layout_width="200dp"        android:layout_height="20dp"        android:visibility="gone"        android:layout_below="@id/label"        />    <ProgressBar         android:id="@+id/secondbar"        style="?android:attr/progressBarStyle"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:visibility="gone"        android:layout_below="@id/firstbar"        />        <Button         android:id="@+id/mybutton"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="begin"        android:layout_below="@id/secondbar"        />    </RelativeLayout>
Progressbar:
protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                firstbar = (ProgressBar) findViewById(R.id.firstbar);        secondbar = (ProgressBar) findViewById(R.id.secondbar);                mybutton = (Button) findViewById(R.id.mybutton);                mybutton.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View view) {if(progressStatus ==0) {firstbar.setVisibility(View.VISIBLE);secondbar.setVisibility(View.VISIBLE);} else if(progressStatus < firstbar.getMax()) {firstbar.setProgress(progressStatus);firstbar.setSecondaryProgress(progressStatus+10);  // 进度条前面虚的进度secondbar.setProgress(progressStatus);} else {firstbar.setVisibility(View.GONE);secondbar.setVisibility(View.GONE);}progressStatus+=10;}});            }

3 ListView+GridView

3.1 ListView


mainlayout.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <LinearLayout android:id="@+id/listlinearlayout"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:orientation="vertical" >                <ListView             android:id="@id/android:list"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:drawSelectorOnTop="false"            android:scrollbars="vertical"            ></ListView>        </LinearLayout></LinearLayout>
UserLayout.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="horizontal"    android:paddingLeft="10dip" android:paddingRight="10dip"    android:paddingTop="1dip"android:paddingBottom="1dip"     >    <TextView         android:id="@+id/user_name"        android:layout_width="100dip" android:layout_height="30dip"        android:textSize="10pt" android:singleLine="true"        />        <TextView         android:id="@+id/user_ip"        android:layout_width="fill_parent" android:layout_height="fill_parent"        android:gravity="right" android:textSize="10pt"        />        </LinearLayout>
ListView.java:
public class MainActivity extends ListActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String,String>>();        HashMap<String, String> map1 = new HashMap<String, String>();        HashMap<String, String> map2 = new HashMap<String, String>();        HashMap<String, String> map3 = new HashMap<String, String>();                map1.put("user_name", "zhangsan");        map1.put("user_ip", "192.168.1.1");                map2.put("user_name", "lisi");        map2.put("user_ip", "192.168.1.1");                map3.put("user_name", "wangwu");        map3.put("user_ip", "192.168.1.1");                list.add(map1);        list.add(map2);        list.add(map3);        // 通过适配器将数据显示到ListView        SimpleAdapter listAdapter = new SimpleAdapter(        this, list, R.layout.user,         new String[]{"user_name", "user_ip"},        new int[]{R.id.user_name, R.id.user_ip});        setListAdapter(listAdapter);    }@Overrideprotected void onListItemClick(ListView l, View v, int position, long id) {// TODO Auto-generated method stubsuper.onListItemClick(l, v, position, id);System.out.println("id = " + id);System.out.println("postition = " + position);}}

3.2 GridView

 
layout.xml
<GridView xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/gridview"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:columnWidth="90dp"    android:numColumns="auto_fit"    android:verticalSpacing="10dp"    android:horizontalSpacing="10dp"    android:stretchMode="columnWidth"    android:gravity="center"/>
MainActivity.java

public class MainActivity extends Activity {@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                GridView gridview = (GridView) findViewById(R.id.gridview);        gridview.setAdapter(new ImageAdapter(this));                gridview.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {Toast.makeText(MainActivity.this, ""+position, Toast.LENGTH_LONG).show();}        });}class ImageAdapter extends BaseAdapter {private Integer[] mThumbIds = {R.drawable.sample1, R.drawable.sample2, R.drawable.sample3,R.drawable.sample4, R.drawable.sample5, R.drawable.sample6, R.drawable.sample7,R.drawable.sample8, R.drawable.sample9, R.drawable.sample10, R.drawable.sample11,R.drawable.sample12};private Context context;public ImageAdapter(Context context) {super();this.context = context;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn mThumbIds.length;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ImageView imageView;if(convertView == null) {imageView = new ImageView(context);imageView.setLayoutParams(new GridView.LayoutParams(85, 120));imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);imageView.setPadding(0, 0, 0, 0);} else {imageView = (ImageView)convertView;}imageView.setImageResource(mThumbIds[position]);return imageView;}}}



4 日期时间控件

4.1 DatePicker

     

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"    tools:context=".MainActivity"    android:orientation="vertical" >        <TextView         android:id="@+id/dateDisplay"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:gravity="center_horizontal"        android:textSize="20sp"        android:text=""        />    <Button         android:id="@+id/pickDate"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:gravity="center_horizontal"        android:text="修改时间"        />    <DatePicker         android:id="@+id/datePicker"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        />    </LinearLayout>
MainActivity.java
public class MainActivity extends Activity {TextView mDateDisplay;Button mPickDate;DatePicker datePicker;private int mYear, mMonth, mDay;    private static final int DATE_DIALOG_ID = 0;@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                mDateDisplay = (TextView) findViewById(R.id.dateDisplay);        mPickDate = (Button) findViewById(R.id.pickDate);                mPickDate.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {showDialog(DATE_DIALOG_ID);}});                final Calendar c = Calendar.getInstance();        mYear = c.get(Calendar.YEAR);        mMonth = c.get(Calendar.MONTH);        mDay = c.get(Calendar.DAY_OF_MONTH);                updateDisplay();                datePicker = (DatePicker) findViewById(R.id.datePicker);        datePicker.init(mYear, mMonth, mDay, new DatePicker.OnDateChangedListener() {@Overridepublic void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) {Toast.makeText(MainActivity.this, year+"-"+(monthOfYear+1), Toast.LENGTH_LONG).show();}});    }@Overrideprotected Dialog onCreateDialog(int id) {switch (id) {case DATE_DIALOG_ID:return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay);default:break;}return null;}    private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {@Overridepublic void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {mYear = year;mMonth = monthOfYear;mDay = dayOfMonth;updateDisplay();}};private void updateDisplay() {mDateDisplay.setText(new StringBuilder().append("时间:").append(mYear).append("-").append(mMonth+1).append("-").append(mDay));}}

4.2 TimePicker

   
MainActivity.java
public class MainActivity extends Activity {TextView mTimeDisplay;Button mPickTime;TimePicker TimePicker;private int mHour, mMinute;    private static final int Time_DIALOG_ID = 0;@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                mTimeDisplay = (TextView) findViewById(R.id.dateDisplay);        mPickTime = (Button) findViewById(R.id.pickDate);                mPickTime.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {showDialog(Time_DIALOG_ID);}});                final Calendar c = Calendar.getInstance();//        for (String str : TimeZone.getAvailableIDs()) {//        System.out.println(str);//}        c.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));        mHour = c.get(Calendar.HOUR_OF_DAY);        mMinute = c.get(Calendar.MINUTE);                upTimeDisplay();            }@Overrideprotected Dialog onCreateDialog(int id) {switch (id) {case Time_DIALOG_ID:return new TimePickerDialog(this, mTimeSetListener, mHour, mMinute, true);default:break;}return null;}    private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {@Overridepublic void onTimeSet(TimePicker view, int hourOfDay, int minute) {mHour = hourOfDay;mMinute = minute;upTimeDisplay();}};private void upTimeDisplay() {mTimeDisplay.setText(new StringBuilder().append("时间:").append(pad(mHour)).append(":").append(pad(mMinute)));}private static String pad(int c) {if(c>=10) {return String.valueOf(c);} else {return "0"+String.valueOf(c);}}}

5 TabWidget

TabWidget通过多个标签切换显示不同的内容。要实现这一效果,需要先了解TabHost,它是一个存放多个Tab标签的容器。每个Tab都可以对应自己的布局。

5.1 在一个容器中编写

   
Activity.xml
<?xml version="1.0" encoding="utf-8"?><TabHost xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@android:id/tabhost"    android:layout_width="fill_parent"    android:layout_height="fill_parent" >    <TabWidget        android:id="@android:id/tabs"        android:layout_width="fill_parent"        android:layout_height="wrap_content" >    </TabWidget>    <FrameLayout        android:id="@android:id/tabcontent"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:paddingTop="65px" >        <LinearLayout            android:id="@+id/Tab1"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:orientation="vertical" >            <EditText                android:id="@+id/edtTab1"                android:layout_width="fill_parent"                android:layout_height="wrap_content" >            </EditText>            <Button                android:id="@+id/btnTab1"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="Tab1" >            </Button>        </LinearLayout>        <LinearLayout            android:id="@+id/Tab2"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:orientation="horizontal" >            <EditText                android:id="@+id/edtTab2"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_weight="300" >            </EditText>            <Button                android:id="@+id/btnTab2"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="Tab2" >            </Button>        </LinearLayout>    </FrameLayout></TabHost>

MainActivity.java
public class MainActivity extends TabActivity {//基于TabActivity构建Button btnTab1,btnTab2;EditText edtTab1,edtTab2;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                TabHost tabs = getTabHost();        //设置Tab1        TabSpec tab1 = tabs.newTabSpec("tab1");        tab1.setIndicator("tab1");      // 设置tab1的名称        tab1.setContent(R.id.Tab1);    // 关联控件        tabs.addTab(tab1);                // 添加tab1                btnTab1=(Button)this.findViewById(R.id.btnTab1);        edtTab1=(EditText)this.findViewById(R.id.edtTab1);        btnTab1.setOnClickListener(new ClickEvent());                //设置Tab2        TabSpec tab2 = tabs.newTabSpec("tab2");        tab2.setIndicator("tab2");              tab2.setContent(R.id.Tab2);            tabs.addTab(tab2);                                btnTab2=(Button)this.findViewById(R.id.btnTab2);        edtTab2=(EditText)this.findViewById(R.id.edtTab2);        btnTab2.setOnClickListener(new ClickEvent());                tabs.setCurrentTab(0);    }        class ClickEvent implements View.OnClickListener {@Overridepublic void onClick(View v) {if(v==btnTab1){edtTab1.setText("tab1");}else if(v==btnTab2){edtTab2.setText("tab2");}}        }}

5.2 分容器编写

          


ic_tab_artists.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/ic_tab_artists_white"        android:state_selected="true" />    <item android:drawable="@drawable/ic_tab_artists_grey" /></selector>
ic_tab_album.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/ic_tab_album_grey"        android:state_selected="false" />    <item android:drawable="@drawable/ic_tab_album_white"        android:state_selected="true" /></selector>
main.xml
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@android:id/tabhost"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    >    <LinearLayout         android:orientation="vertical"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:padding="5dp"        >        <TabWidget             android:id="@android:id/tabs"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            ></TabWidget>        <FrameLayout             android:id="@android:id/tabcontent"            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:padding="5dp"            >        </FrameLayout>    </LinearLayout></TabHost>
MainActivity.java
public class MainActivity extends TabActivity {@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                Resources res = getResources();        TabHost tabHost = getTabHost();        TabHost.TabSpec spec;        Intent intent;                intent = new Intent().setClass(this, ArtistsActivity.class);        spec = tabHost.newTabSpec("artists").setIndicator("Artists", res.getDrawable(R.drawable.ic_tab_artists)).setContent(intent);        tabHost.addTab(spec);                intent = new Intent().setClass(this, AlbumsActivity.class);        spec = tabHost.newTabSpec("albums").setIndicator("Albums", res.getDrawable(R.drawable.ic_tab_album)).setContent(intent);        tabHost.addTab(spec);                tabHost.setCurrentTab(1);}}

6 Spinner+AutoComplete

6.1 Spinner

   


Strings.xml
<?xml version="1.0" encoding="utf-8"?><resources>    <string name="app_name">Radio</string>    <string name="action_settings">Settings</string>    <string name="hello_world">Hello world!</string><string name="planet_prompt">Choose a planet</string><string-array name="planets_array">    <item>Mercury</item>    <item>Venus</item>    <item>Earth</item>    <item>Mars</item>    <item>Jupiter</item>    <item>Saturn</item>    <item>Uranus</item></string-array></resources>
Layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        >            <TextView         android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginTop="10dip"        android:text="@string/planet_prompt"           />        <Spinner         android:id="@+id/spinner"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:prompt="@string/planet_prompt"        />    </LinearLayout>
MainActivity.java
public class MainActivity extends Activity {@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                Spinner spinner = (Spinner) findViewById(R.id.spinner);        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(        this, R.array.planets_array,         android.R.layout.simple_spinner_item);        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);        spinner.setAdapter(adapter);}}

6.2 AutoComplete




list_ite.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:textColor="#000"    android:padding="10dp"    android:textSize="16sp" ></TextView>
Layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        >            <TextView         android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="Country"           />        <AutoCompleteTextView         android:id="@+id/autocomplete_country"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginLeft="5dp"        />    </LinearLayout>
MainActivity.java
public class MainActivity extends Activity {static final String[] countries = new String[] { "Africa", "Belarus","china", "changchun" };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.list_item, countries);textView.setAdapter(adapter);}}





原创粉丝点击