第3章
常用的UI组件介绍
本章学习目标
掌握本章中讲解的所有UI组件。
我们在实际开发中会经常使用UI组件来组合项目的界面,而常用的UI组件无非就是几种,至于特殊的组件可以通过第2章中的自定义UI组件来绘制。通过对本章的学习,读者应掌握常用UI组件的用法。
3.1 菜 单
Android中的菜单(menu)在桌面应用中十分广泛,几乎所有的桌面应用都会使用到。Android应用中的菜单分为三种:选项菜单(OptionMenu)、上下文菜单(ContextMenu)、弹出式菜单(PopupMenu),本节依次介绍这些内容。
3.1.1 选项菜单
从Android 3.1开始引入了全新的操作栏,扩展了很多功能,例如安置菜单选项、配置应用图标作为导航按钮等。
可显示在操作栏上的菜单称为选项菜单(OptionMenu)。选项菜单提供了一些选项,用户选择后可进行相应的操作。
一般为Android应用添加选项菜单的步骤如下。
(1)重写Activity的onCreateOptionsMenu(Menu menu)方法,在该方法里调用Menu对象的方法添加菜单项。
(2)如果想要引用程序响应菜单项的单击事件,就要继续重写Activity的onOptionsItemSelected(MenuItem mi)方法。
添加菜单项的方式与UI组件的使用方式一样,可以在代码中使用也可以在XML布局文件中使用。Android同样推荐在XML中使用菜单,具体为在app\src\main\res文件夹中创建名称为menu的文件夹,创建完成之后在menu文件夹中新建根标签为menu的布局文件,来看具体的示例代码。
【例3-1】 XML文件中的选项菜单options_menu.xml。
1
2 xmlns:app="http://schemas.android.com/apk/res-auto">
3 4 android:title="第一个菜单项"/>
5 6 android:title="第二个菜单项"/>
7 8 android:title="第三个菜单项"/>
9
菜单定义完成之后需要在代码中使用才可以看到效果,Java代码如下:
1 public class MainActivity extends AppCompatActivity {
2 @Override
3 protected void onCreate(Bundle savedInstanceState) {
4 super.onCreate(savedInstanceState);
5 setContentView(R.layout.activity_main);
6 }
7 @Override
8 public boolean onCreateOptionsMenu(Menu menu) {
9 getMenuInflater().inflate(R.menu.option_menu, menu);
10 return true;
11 }
12 @Override
13 public boolean onOptionsItemSelected(MenuItem item) {
14 switch (item.getItemId()) {
15 case R.id.menu_item1:
16 Toast.makeText(MainActivity.this,
17 "第一个菜单项", Toast.LENGTH_LONG).show();
18 break;
19 case R.id.menu_item2:
20 Toast.makeText(MainActivity.this,
21 "第二个菜单项", Toast.LENGTH_LONG).show();
22 break;
23 case R.id.menu_item3:
24 Toast.makeText(MainActivity.this,
25 "第三个菜单项", Toast.LENGTH_LONG).show();
26 break;
27 }
28 return true;
29 }
30 }
……