当前位置: 代码迷 >> Android >> android基础入门控件详解(四)
  详细解决方案

android基础入门控件详解(四)

热度:64   发布时间:2016-04-28 06:35:24.0
android基础入门控件详解(4)

一.Button、TextView、EditText、RadioButton、RadioGroup、CheckBox综合使用:

布局文件:

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="#c0c0c0"        android:text="@string/hello_world"        android:textColor="#d2691e"        android:layout_gravity="center"        android:textSize="30sp"         />    <EditText        android:id="@+id/name"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="@string/name"        android:background="#ffe4c4"        />    <RadioGroup         android:id="@+id/RadioGroup"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="vertical"        >        <RadioButton            android:id="@+id/sun"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@string/sun" />        <RadioButton            android:id="@+id/moon"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@string/moon" />        <RadioButton            android:id="@+id/stars"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@string/stars" />            </RadioGroup>    <CheckBox        android:id="@+id/day"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/day" />    <CheckBox        android:id="@+id/theearth"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/theearth" />    <CheckBox        android:id="@+id/sea"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/sea" />    <Button        android:id="@+id/submit"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/submit"         /></LinearLayout>


strings.xml:

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="app_name">HelloWorld</string>    <string name="action_settings">Settings</string>    <string name="hello_world">词语拼接</string>    <string name="submit">提交</string>    <string name="name">名字</string>    <string name="stars">星星</string>    <string name="moon">月亮</string>    <string name="sun">太阳</string>    <string name="day">天</string>    <string name="theearth">地</string>    <string name="sea">海</string></resources>

MainActivity.java:

package com.example.helloworld;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.EditText;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.Toast;public class MainActivity extends Activity {    //用来输入姓名	private EditText name;	//创建RadioGroup对象	private RadioGroup rg;	//创建三个RadioButton对象	private RadioButton sun,moon,stars;	//创建三个CheckBox对象	private CheckBox day,theearth,sea;	//创建提交按钮	private Button submit;	//用于显示的文本	String text="";	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);				//findViewById()方法获得布局文件中的控件,通过Id获取。		name =(EditText)findViewById(R.id.name);		rg = (RadioGroup)findViewById(R.id.RadioGroup);				sun = (RadioButton)findViewById(R.id.sun);		moon = (RadioButton)findViewById(R.id.moon);		stars = (RadioButton)findViewById(R.id.stars);				day = (CheckBox)findViewById(R.id.day);		theearth = (CheckBox)findViewById(R.id.theearth);		sea = (CheckBox)findViewById(R.id.sea);				submit = (Button)findViewById(R.id.submit);						//为单项选择添加事件。		rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {						@Override			public void onCheckedChanged(RadioGroup group, int checkedId) {							     if(checkedId == sun.getId()){                        text +=sun.getText().toString();			     }else if(checkedId == moon.getId()){			    	 text +=moon.getText().toString();			     }else{			    	 text +=stars.getText().toString();			     }						}		});				//多项选择的事件只写一个。那两个可以根据自己的需求来填写。		day.setOnCheckedChangeListener(new OnCheckedChangeListener() {						@Override			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {				if(day.isChecked()){					displayToast("你喜欢"+day.getText());				}							}		});										//添加按钮点击事件,用吐司来显示选中内容。		submit.setOnClickListener(new View.OnClickListener() {						@Override			public void onClick(View v) {				String str="喜欢";				if(day.isChecked()){					str += day.getText()+"、";				}				if(theearth.isChecked()){					str += theearth.getText()+"、";				}				if(sea.isChecked()){					str += sea.getText()+"、";				}								displayToast(name.getText().toString()+str+text);							}		});	}    //吐司,信息提示。	public void displayToast(String text){		Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();	}}


运行图片:

当选中天多项选择时,则会触发事件弹出吐司信息。


当输入名字和单项选择之后点击提交按钮,就会触发事件,提示你选中的信息。



二.单击事件:

单击事件有三种常用处理方式:

1).匿名内部类作为事件监听:

   实现:

  按钮:

<Button          android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:id="@+id/click"         android:text="单击"        />

 代码:

	        Button button;		button = (Button)findViewById(R.id.click);		button.setOnClickListener(new OnClickListener() {						@Override			public void onClick(View v) {				displayToast("点击按钮");							}		});

运行图片:



2).内部类作为监听器:

按钮:

<Button          android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:id="@+id/click"         android:text="单击"        />

代码:

public class MainActivity extends Activity {			@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);			    Button button;		button = (Button)findViewById(R.id.click);		button.setOnClickListener(new ButtonOnClick());			}	private final class ButtonOnClick implements OnClickListener{		@Override		public void onClick(View v) {			displayToast("点击按钮");					}			}		public void displayToast(String text){		Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();	}	@Override	public boolean onCreateOptionsMenu(Menu menu) {		// Inflate the menu; this adds items to the action bar if it is present.		getMenuInflater().inflate(R.menu.main, menu);		return true;	}}

运行图片:




3).在控件中指定监听方法:

 android:onClick="指定方法名字"

按钮:

 <Button          android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:id="@+id/click"         android:text="单击"         android:onClick="onClick"        />

代码:

public class MainActivity extends Activity {			@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);			    Button button;		button = (Button)findViewById(R.id.click);					}	//必须按这样的格式,方法名和参数名可以修改其他不能改动。	public void onClick(View v){				displayToast("我已经点击了按钮");			}	public void displayToast(String text){		Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();	}	@Override	public boolean onCreateOptionsMenu(Menu menu) {		// Inflate the menu; this adds items to the action bar if it is present.		getMenuInflater().inflate(R.menu.main, menu);		return true;	}}
运行图片



还有其他事件监听方式,想了解的大家可以去查。

  相关解决方案