【Android】标签页、计时器、单选按钮、复选按钮

写一个小程序把安卓程序中的几个基础组件的基本用法串联起来。

如下图所示:

在安卓程序中,一个计时器,一直在不断地计时,每10秒弹出一个提示。

MainActivity被一个标签页分成两部分,一部分,有单选按钮与复选按钮,最后有一个提交按钮,

结果在另一个标签页中显示。

用这个程序来说明安卓中标签页、计时器、单选按钮、复选按钮的用法。

首先贴上res\values\string.xml中,各个组件的字符串。

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">标签页与基本组件</string>
    <string name="action_settings">Settings</string>
    <string name="tab1_RadioGroup1_RadioButton1">单选选项1</string>
    <string name="tab1_RadioGroup1_RadioButton2">单选选项2</string>
    <string name="tab1_CheckBox1">复选选项1</string>
    <string name="tab1_CheckBox2">复选选项2</string>
    <string name="tab1_Button1">提交</string>
    <string name="tab2_TextView1">标签页2</string>

</resources>

整个程序的组件,已经基本可以略窥一二了,

标签页的的标题“组件”、“结果”一会儿通过Java中设置。

同时,在没有按“组件”标签页的“提交”按钮之前,在“结果”标签页的标签文本TextView默认是为“标签2”。

1、首先在res\layout文件夹中新建两个xml,一个为tab1.xml,一个为tab2.xml如下图所示:

如果你在一个Activity中决定使用标签页,那你这个Activity中基本布局文件,这里MainActivity默认是activity_main.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" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            />

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />

    </LinearLayout>

</TabHost>

这里大家可以明显注意到,这里设置ID的方式,与平时我们自己定义安卓组件的情况不同,这里设置Id不为android:id="@+id/xx"中间没有加号。这是因为这个标签页组件是系统中一个固定的常量,tabhost、tabs这些id,不得自己改名,相当于关键字。

2、之后是对"组件"标签页的布局tab1.xml的书写。

这里很简单,通过一个基本线性布局,各个组件垂直排列下来,在"组件"标签页中放着一个计时器、单选按钮组、复选按钮x2,一个按钮,并且对要被Java控制的组件赋予id。

同时非常重要的一点是,要为总的线性布局赋予id,一会儿要在MainActivity.java声明,标签1加载这个布局。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <!-- 计时器 -->

    <Chronometer
        android:id="@+id/chronometer1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="24sp" />
    <!--
	单选按钮组
	需要注意的是:
	单选按钮组如果要被控制
	必须对单选按钮组、各个单选按钮都赋予相应的id,
	否则程序会出错
    -->

    <RadioGroup
        android:id="@+id/tab1_RadioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <RadioButton
            android:id="@+id/tab1_RadioGroup1_RadioButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="@string/tab1_RadioGroup1_RadioButton1"
            android:textSize="24sp" />

        <RadioButton
            android:id="@+id/tab1_RadioGroup1_RadioButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/tab1_RadioGroup1_RadioButton2"
            android:textSize="24sp" />
    </RadioGroup>
    <!-- 复选框x2 -->

    <CheckBox
        android:id="@+id/tab1_CheckBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/tab1_CheckBox1"
        android:textSize="24sp" />

    <CheckBox
        android:id="@+id/tab1_CheckBox2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/tab1_CheckBox2"
        android:textSize="24sp" />
    <!-- 按钮 -->

    <Button
        android:id="@+id/tab1_Button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/tab1_Button1"
        android:textSize="24sp" />

</LinearLayout>

3、最后是对"结果"标签页的布局tab2.xml的书写。这里非常简单,放置一个带id的标签文本TextView就OK了。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tab2_TextView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/tab2_TextView1"
        android:textSize="24sp" />

</LinearLayout>

4、布局完毕,开始对MainActivity.java这个文件进行书写。虽然用了标签页布局,但这个java文件能够一次性地控制多个标签页中的各个组件。

程序中的OnCreate方法分为三个部分,一个是标签页的初始化、一个是计时器的初始化、一个是按钮单击事件。没有什么特别的。

package com.tabComponent;

import android.os.Bundle;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Chronometer;
import android.widget.Chronometer.OnChronometerTickListener;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
	// 声明要控制的组件
	private TabHost tabHost;
	private Chronometer chronometer;
	private RadioGroup tab1_RadioGroup1;
	private CheckBox tab1_CheckBox1;
	private CheckBox tab1_CheckBox2;
	private Button tab1_Button1;
	private TextView tab2_TextView1;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 标签页初始化开始
		tabHost = (TabHost) findViewById(android.R.id.tabhost);
		tabHost.setup();
		LayoutInflater layoutInflater = LayoutInflater.from(this);
		layoutInflater.inflate(R.layout.tab1, tabHost.getTabContentView());
		layoutInflater.inflate(R.layout.tab2, tabHost.getTabContentView());
		tabHost.addTab(tabHost.newTabSpec("").setIndicator("组件")
				.setContent(R.id.LinearLayout1));// 设置标签1的标题为“组件”,且布局为LinearLayout1,下同理
		tabHost.addTab(tabHost.newTabSpec("").setIndicator("结果")
				.setContent(R.id.LinearLayout2));
		// 标签页初始化结束
		// 计时器初始化开始
		chronometer = (Chronometer) findViewById(R.id.chronometer1);
		chronometer.setFormat("程序已经运行了:%s");// %s就是那个不断跳跃的时间,其格式为00:00,精确到秒
		chronometer.start();// 开始计时,默认不开始
		chronometer// 计时器监听事件,计时器每改变一次触发一次,这里是每1秒触发一次
				.setOnChronometerTickListener(new OnChronometerTickListener() {
					int i = 0;

					// 这个i,自从程序运行之后,每秒都在自增
					public void onChronometerTick(Chronometer chronometer) {
						i++;
						if (i % 10 == 0) {// 每10秒,弹出一个Toast提示一下
							Toast.makeText(MainActivity.this,
									"程序已启动了" + i + "秒", Toast.LENGTH_LONG)
									.show();
						}
					}
				});
		// 计时器结束
		// 按钮1点击事件开始
		tab1_Button1 = (Button) findViewById(R.id.tab1_Button1);
		tab1_Button1.setOnClickListener(new OnClickListener() {// 为button1添加点击事件
					@Override
					public void onClick(View v) {
						String str = "";
						// 获取单选按钮组的值
						tab1_RadioGroup1 = (RadioGroup) findViewById(R.id.tab1_RadioGroup1);
						for (int i = 0; i < tab1_RadioGroup1.getChildCount(); i++) {
							RadioButton radioButton = (RadioButton) tab1_RadioGroup1
									.getChildAt(i);
							if (radioButton.isChecked()) {
								str += radioButton.getText() + "被选中,";
								break;
							}
						}
						// 获取各个复选框是否被选中
						tab1_CheckBox1 = (CheckBox) findViewById(R.id.tab1_CheckBox1);
						if (tab1_CheckBox1.isChecked()) {
							str += tab1_CheckBox1.getText() + "被选中,";
						}
						tab1_CheckBox2 = (CheckBox) findViewById(R.id.tab1_CheckBox2);
						if (tab1_CheckBox2.isChecked()) {
							str += tab1_CheckBox2.getText() + "被选中,";
						}
						tab2_TextView1 = (TextView) findViewById(R.id.tab2_TextView1);
						tab2_TextView1.setText(str);
					}
				});
		// 按钮1点击事件结束
	}

	@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;
	}

}

至此,整个安卓程序写完。

时间: 2024-12-21 07:32:54

【Android】标签页、计时器、单选按钮、复选按钮的相关文章

JAVA 单选按钮、复选按钮

//单选按钮和复选按钮 import java.awt.*; import javax.swing.*; public class Jiemian6 extends JFrame{ JPanel mb1,mb2,mb3; //面板定义 JButton an1,an2; //按钮定义 JLabel bq1,bq2; //标签定义 JCheckBox fxk1,fxk2,fxk3; //多选框定义 JRadioButton dx1,dx2; //单选按钮定义 ButtonGroup dxz; //把

UI控件之RadioButton(单选按钮)&amp;Checkbox(复选按钮)

(一)概述: (二)RadioButton的基本用法与事件处理: 效果图: 实现代码: xml文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:

java Swing 之单选按钮和复选按钮的使用

/** * java Swing 单选按钮 * @author gao */ package com.gao; import java.awt.FlowLayout; import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.border.EmptyBorder; public c

Android——复选按钮和开关按钮

复选按钮和开关按钮代码如下: 1 <LinearLayout 2 android:layout_width="match_parent" 3 android:layout_height="wrap_content"> 4 <CheckBox 5 android:layout_width="wrap_content" 6 android:layout_height="wrap_content" 7 androi

安卓开发_复选按钮控件(CheckBox)的简单使用

复选按钮 即可以选择若干个选项,与单选按钮不同的是,复选按钮的图标是方块,单选按钮是圆圈 复选按钮用CheckBox表示,CheckBox是Button的子类,支持使用Button的所有属性 一.由于复选框可以选中多项,所有为了确定用户是否选择了某一项,还需要为每一个选项添加setOnCheckedChangeListener事件监听 例如: 为id为like1的复选按钮添加状态改变事件监听,代码如下 1 final CheckBox like1 = (CheckBox)findViewById

加监听器,单选复选按钮

MainActivity package com.example.lenovo.myapplication; import android.provider.MediaStore; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.CheckBox; import android.widget.CompoundButton; import android

关于DevExpress GridControl控件中新增复选按钮一事

关于DevExpress GridControl新增复选按钮的事情,查了一下网上的文档,发现都是在查询的数据集[table]中新增一列供checkbox绑定使用.偶尔的一瞬间,我在DevExpress 的Demo上发现有使用CheckBox的例子,找了半天Demo的代码,还是没找到.然后就找到了设置的属性. 晚上的时候,想了想,感觉能试出来简直是运气.如下配置即可: 设置GridView中的[OptionsSelection]->[MultiSelectMode]设置为CheckBoxRowSe

checkboxes(复选按钮)

复选按钮是input的输入框的另一种类型. 每一个复选按钮都应该嵌套进label元素中. 所有关联的复选按钮应该具有相同的name属性. 下面是复选按钮的例子: <label><input type="checkbox" name="personality"> Loving</label>

Goods:购物车模块之全选按钮与条目之复选按钮的click事件

1 <script type="text/javascript"> 2 /* 3 计算总计方法 4 */ 5 $(function() { 6 7 showTotal(); //文档加载完就计算总计 8 9 //给全选添加click事件 10 $("#selectAll").click(function() { 11 //获取全选的状态 12 var bool = $("#selectAll").attr("checked&