Android -- 对话框 Dialog: 确定取消,单选多选,进度显示, 常用控件示例:单选多选框,下拉列表,进度条,自动完成文本框, 菜单显示

1. 对话框示例代码

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	/**
	 * 确定取消对话框
	 * 
	 * @param view
	 */
	public void click1(View view) {
		// 1.创建一个对话框的构造器.
		AlertDialog.Builder builder = new Builder(this);
		builder.setTitle("java培训标题");
		builder.setIcon(R.drawable.ic_launcher);
		builder.setMessage("想打开官方网站么?");
		builder.setPositiveButton("确定", new OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				Intent intent = new Intent();
				intent.setAction(Intent.ACTION_VIEW);
				intent.setData(Uri.parse("http://edu.csdn.net"));
				startActivity(intent);
			}
		});
		builder.setNegativeButton("取消", new OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				// 默认实现, 点击后 关闭对话框
			}
		});

		// builder.create().show();
		builder.show();

	}

	/**
	 * 单选对话框
	 * 
	 * @param view
	 */
	public void click2(View view) {
		// 1.创建一个对话框的构造器.
		AlertDialog.Builder builder = new Builder(this);
		builder.setTitle("你想吃什么");
		final String[] items = new String[] { "苹果", "葡萄", "香蕉" };
		builder.setSingleChoiceItems(items, 1, new OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(MainActivity.this, "您选择了吃" + items[which], 0)
						.show();
				dialog.dismiss();
			}
		});

		// builder.create().show();
		builder.show();

	}

	/**
	 * 多选对话框
	 * 
	 * @param view
	 */
	public void click3(View view) {
		// 1.创建一个对话框的构造器.
		AlertDialog.Builder builder = new Builder(this);
		builder.setTitle("你想吃什么");
		final String[] items = new String[] { "苹果", "葡萄", "香蕉" };
		final boolean[] status = new boolean[] { true, false, true };
		builder.setMultiChoiceItems(items, status,
				new OnMultiChoiceClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which,
							boolean isChecked) {
						if (isChecked) {
							Toast.makeText(MainActivity.this,
									items[which] + "被选中了", 0).show();

						} else {
							Toast.makeText(MainActivity.this,
									items[which] + "被取消选中了", 0).show();
						}
						status[which] = isChecked;
					}
				});

		builder.setPositiveButton("确定", new OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				// todo:遍历数组 查看状态

			}
		});

		// builder.create().show();
		builder.show();

	}

	/**
	 * 进度条对话框
	 * 
	 * @param view
	 */
	public void click4(View view) {
		ProgressDialog pd = new ProgressDialog(this);
		pd.setTitle("请稍后");
		pd.setMessage("正在后台处理...");
		pd.show();
		new Thread(){
			public void run(){
				Thread.sleep(2000);
				pd.dismiss();
			}
		}.start();
		
	}
	/**
	 * 显示进度的进度条对话框
	 * 
	 * @param view
	 */
	public void click5(View view) {
		final ProgressDialog pd = new ProgressDialog(this);
		pd.setTitle("请稍后");
		pd.setMessage("正在后台处理...");
		pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
		pd.setMax(100);
		new Thread(){
			public void run() {
				for(int i = 0;i<100;i++){
					pd.setProgress(i);
					try {
						Thread.sleep(30);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
				pd.dismiss();
			};
		}.start();
		pd.show();
	}
}

 

2. 单选框(RadioButton)

要完成单选框显示,我们需要使用到RadioGroupRadioButton(单选框)RadioGroup用于对单选框进行分组,相同组内的单选框只有一个单选框能被选中。(例子代码请见下方备注栏)

 RadioGroup.check(R.id.dotNet); id 名为 dotNet 的单选框设置成选中状态。
(RadioButton) findViewById(radioGroup.getCheckedRadioButtonId());// 获取被选中的单选框。
RadioButton.getText();// 获取单选框的值
调用 setOnCheckedChangeListener() 方法,处理单选框被选择事件,把 RadioGroup.OnCheckedChangeListener 实例作为参数传入

 

3. 多选框(CheckBox)

每个多选框都是独立的,可以通过迭代所有多选框,然后根据其状态是否被选中再获取其值。

CheckBox.setChecked(true);// 设置成选中状态。
CheckBox.getText();// 获取多选框的值
 调用 setOnCheckedChangeListener () 方法,处理多选框被选择事件,把 CompoundButton.OnCheckedChangeListener 实例作为参数传入
 
4. 下拉列表框 (Spinner)
public class MainActivity extends Activity {

	protected static final String TAG = "MainActivity";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// 第二个参数为下拉列表框每一项的界面样式,该界面样式由Android系统提供,当然您也可以自定义
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_spinner_item);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		adapter.add("java");
		adapter.add("dotNet");
		adapter.add("php");
		
		Spinner spinner = (Spinner) findViewById(R.id.spinner);
		spinner.setAdapter(adapter);
		spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int position, long id) {
				Spinner spinner = (Spinner)parent;
				String itemContent = (String)parent.getItemAtPosition(position);
				Toast.makeText(getApplicationContext(), itemContent, 0).show();
				
			}

			@Override
			public void onNothingSelected(AdapterView<?> parent) {
				Log.i(TAG,  parent.getClass().getName());
			}

		});

	}
}

5. 拖动条 (SeekBar)
 SeekBar.getProgress() 获取拖动条当前值
 调用 setOnSeekBarChangeListener() 方法,处理拖动条值变化事件,把 SeekBar.OnSeekBarChangeListener 实例作为参数传入
 
6. 进度条 (ProgressBar )

在布局xml文件中添加进度条代码:

<ProgressBar

    android:layout_width="fill_parent"

    android:layout_height="20px"

    style="?android:attr/progressBarStyleHorizontal"

    android:id="@+id/downloadbar"/>

在代码中操作进度条:

ProgressBar.setMax(100);//设置最大刻度

ProgressBar.setProgress(0);//设置进度条的当前刻度,如果进度条的最大刻度为100,当前刻度为50,进度条将进行到一半。

 

7. 输入内容自动完成文本框(AutoCompleteTextView

<AutoCompleteTextView

   android:layout_width="fill_parent“  android:layout_height="wrap_content“

  <!– completionThreshold 指定至少输入几个字符后才会出现自动提示功能 à

   android:completionThreshold="1“ ,

   android:id="@+id/name" />

protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		String[] names = {"老张", "老方", "老毕", "李明" , "李丽", "陈江", "abc", "acc"};
		AutoCompleteTextView nameText = (AutoCompleteTextView)this.findViewById(R.id.actv);
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, names);
		nameText.setAdapter(adapter);

	}


8. 多次输入-内容自动完成文本框(MultiAutoCompleteTextView

除了AutoCompleteTextView控件外,我们还可以使用MultiAutoCompleteTextView控件来完成连续输入的功能。也就是说,当输入完一个字符串后,在该字符串后面输入一个逗号(,),在逗号前后可以有任意多个空格,然后再输入一个字符串,仍然会显示自动提示列表。

使用MultiAutoCompleteTextView时,需要为它的setTokenizer方法指定MultiAutoCompleteTextView.CommaTokenizer类对象实例,

该对象表示采用逗号作为输入多个字符串的分隔符。

< MultiAutoCompleteTextView

   android:layout_width="fill_parent“  android:layout_height="wrap_content“

  <!– completionThreshold 指定至少输入几个字符后才会出现自动提示功能à

   android:completionThreshold="1“ 

   android:id="@+id/name" />

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

     String[] names = {"老张", "老方", "老毕", "李明" , "李丽", "陈江", "abc", "acc"};

     MultiAutoCompleteTextView nameText = (MultiAutoCompleteTextView)this.findViewById(R.id.name);

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,    names);

     nameText.setAdapter(adapter);

     nameText.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());}


9. 菜单(Menu)

/res/memu/activity_main.xml  菜单的布局文件

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/item1"
        android:title="我是选项1">
    </item>
    <item
        android:id="@+id/item2"
        android:title="我是选项2">
    </item>

</menu>

MainActivity.java 菜单的创建和点击响应

@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.item1:
			Toast.makeText(this, "菜单条目1被点击了", 0).show();
			break;

		case R.id.item2:
			Toast.makeText(this, "菜单条目2被点击了", 0).show();
			break;
		}

		return super.onOptionsItemSelected(item);
	}



 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值