Android高级界面组件的学习(一)

简介: 学习过基础的较常用的组件,现在我们要向更多更高的知识出发,所以下面来讲讲Android中的高级界面组件。 (1)前面我们学习过TextView和EditText,关于文本不只是有那些基础组件,也有高级组件AutoCompleteTextView(自动完成文本框),他是从EditText下面派生出来的,但是呢?他比普通的编辑框多了个功能,就是当用户输入一定的字符之后,它会出现一个下拉菜单让用户选择,当用户选择其中的某个菜单项就回按用户选择的自动填写该文本框。

学习过基础的较常用的组件,现在我们要向更多更高的知识出发,所以下面来讲讲Android中的高级界面组件。

(1)前面我们学习过TextView和EditText,关于文本不只是有那些基础组件,也有高级组件AutoCompleteTextView(自动完成文本框),他是从EditText下面派生出来的,但是呢?他比普通的编辑框多了个功能,就是当用户输入一定的字符之后,它会出现一个下拉菜单让用户选择,当用户选择其中的某个菜单项就回按用户选择的自动填写该文本框。这些我们在各大搜索框时会看到,最常见的当然就是百度一下,你就知道。那么他是怎么实现的呢?

首先,我们当然是要写一个它的布局文件,例如:

<!--
    自动完成文本框,其中completionHint属性是指下拉菜单中的提示标题
    completionThreshold属性是指用户至少输入几个字符才显示,这里设置为1个,
    dropDownVertical(Horizontal)代表下拉菜单与文本框之间的垂直(水平)偏移,因为默认是紧跟(左对齐),
    dropDownWidth(Height)则是下拉菜单的宽(高)
    -->
    <AutoCompleteTextView
        android:id="@+id/actv_test"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginRight="50dp"
        android:completionHint="@string/auto_text"
        android:completionThreshold="1"
        android:dropDownHorizontalOffset="5dp"
        android:dropDownVerticalOffset="2dp"
        android:dropDownWidth="200dp"
        android:dropDownHeight="300dp" />
然后在Activity里面为他定义一个字符串数组作为提示文本,并且创建一个适配器封装该数组,主要代码如下:

        String[] starNames = new String[] {
			"邓紫棋",
			"邓丽君",
			"邓超"
	};
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.search_layout);
		
		ArrayAdapter<String> auto = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, starNames);
		AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.actv_test);
		actv.setAdapter(auto);
	}
然后我们运行手机会得到下面这个界面:


 (2)同样的,在前面我们学习了时间的基础组件包括AnalogClock赫尔DigitalClock,可是我们发现这两个基础组件通常是和时间选择器在一块的,也就是Android里面的DatePicker(日期选择器)和TimePicker(时间选择器),那么这两个选择器是怎样实现选择的呢?这就要说到DatePicker的OnDateChangeListener和TimePicker的OnTimeChangeListener这两个监听器。

<TimePicker
        android:id="@+id/tp_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" />

<TextView 
        android:id="@+id/tv_time_show"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>
上面就是时间选择器的布局文件,TextView是用来显示我们选择的时间信息的,主要代码如下:
                TimePicker tpPicker = (TimePicker) findViewById(R.id.tp_test);
		tvTimeShow = (TextView) findViewById(R.id.tv_time_show);

		Calendar c = Calendar.getInstance();
		hour = c.get(Calendar.HOUR);
		minute = c.get(Calendar.MINUTE);

		tpPicker.setOnTimeChangedListener(new OnTimeChangedListener() {

			@Override
			public void onTimeChanged(TimePicker arg0, int hour, int minute) {
				TimeActivity.this.hour = hour;
				TimeActivity.this.minute = minute;

				tvTimeShow.setText("选择的时间是" + hour+ "时" + minute + "分");
			}
		});
同样地,日期选择器的布局文件和主要代码如下:

<DatePicker
        android:id="@+id/dp_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>
    
    <TextView 
        android:id="@+id/tv_date_show"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>
                DatePicker dpPicker = (DatePicker) findViewById(R.id.dp_test);
		tvDateShow = (TextView) findViewById(R.id.tv_date_show);
		
		Calendar c = Calendar.getInstance();
		year = c.get(Calendar.YEAR);
		month = c.get(Calendar.MONTH);
		day = c.get(Calendar.DAY_OF_MONTH);
		
		dpPicker.init(year, month, day, new OnDateChangedListener() {

			@Override
			public void onDateChanged(DatePicker arg0, int year, int month,
					int day) {
				DateActivity.this.year = year;
				DateActivity.this.month = month;
				DateActivity.this.day = day;

				tvDateShow.setText("选择的日期是" + year + "年" + month + "月" + day
						+ "日");
			}
		});
具体的页面显示如下:


如上图所示,我们使用这两个选择器时就会显示我们选择后的日期和时间信息。再进一步学习的话,我们也可以结合之前的时钟做一个类手机自带的时间显示App了。

目录
相关文章
|
1月前
|
XML 缓存 Android开发
Android开发,使用kotlin学习多媒体功能(详细)
Android开发,使用kotlin学习多媒体功能(详细)
102 0
|
2月前
|
设计模式 Android开发
[Android 四大组件] --- BroadcastReceiver
[Android 四大组件] --- BroadcastReceiver
33 0
|
3月前
|
Android开发 开发者
什么是Android Jetpack,它包括哪些组件?
什么是Android Jetpack,它包括哪些组件?
42 0
|
2天前
|
网络协议 Shell Android开发
Android 深入学习ADB调试原理(1)
Android 深入学习ADB调试原理(1)
17 1
|
13天前
|
存储 数据库 Android开发
构建高效安卓应用:采用Jetpack架构组件优化用户体验
【4月更文挑战第12天】 在当今快速发展的数字时代,Android 应用程序的流畅性与响应速度对用户满意度至关重要。为提高应用性能并降低维护成本,开发者需寻求先进的技术解决方案。本文将探讨如何利用 Android Jetpack 中的架构组件 — 如 LiveData、ViewModel 和 Room — 来构建高质量的安卓应用。通过具体实施案例分析,我们将展示这些组件如何协同工作以实现数据持久化、界面与逻辑分离,以及确保数据的即时更新,从而优化用户体验并提升应用的可维护性和可测试性。
|
2月前
|
数据可视化 Android开发
[Android 四大组件] --- Service
[Android 四大组件] --- Service
24 0
|
2月前
|
Android开发
[Android 四大组件] --- Activity
[Android 四大组件] --- Activity
22 1
|
2月前
|
Android开发 数据安全/隐私保护
【Android Studio】简单的QQ登录界面
【Android Studio】简单的QQ登录界面
|
2月前
|
存储 数据库 Android开发
安卓四大组件是什么?
安卓四大组件是什么?
|
3月前
|
开发框架 物联网 数据库
89个android学习样例源码
89个android学习样例源码
76 0