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;
	}
}
运行图片



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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值