一.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; } }运行图片
还有其他事件监听方式,想了解的大家可以去查。