您的位置:首页 > 移动开发 > Android开发

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

2014-03-17 07:29 573 查看
一.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;
}
}
运行图片



还有其他事件监听方式,想了解的大家可以去查。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: