Android学习笔记(七)——常见控件
//此系列博文是《第一行Android代码》的学习笔记,如有错漏,欢迎指正!
Android 给我们提供了大量的 UI控件,下面我们简单试试几种常用的控件。
一、TextView
在布局文件中加入TextView元素:
1 <TextView android:text="This is TextView!"
2 android:gravity="center"
3 android:layout_width="match_parent"
4 android:layout_height="wrap_content"
5 android:textSize="34sp"
6 android:textColor="#000000"/>
代码的意思显而易见,id是当前控件的唯一标识符,text是所要显示的文本内容,width和height可以控制控件的宽和高,一般有三种可选值: match_parent、fill_parent 和 wrap_content,其中 match_parent 和fill_parent的意义相同。match_parent 表示让当前控件的大小和父布局的大小一样。wrap_content 表示让当前控件的大小能够刚好包含住里面的内容,也就是由控件内容决定当前控件的大小。我们也可以对控件的宽和高指定一个固定的大小,但是这样做有时会在不同手机屏幕的适配方面出现问题。TextView的文本是默认左上角对齐的,但我们可以使用 android:gravity来指定文字的对齐方式, 可选值有 top、 bottom、 left、 right、 center等 , 可 以 用 “ | ” 来 同 时 指 定 多 个 值 , 这 里 我 们 指 定 的 "center" , 效 果 等 同 于"center_vertical|center_horizontal",表示文字在垂直和水平方向都居中对齐。另外textSize用于指定字体大小,textColor用于指定字体颜色。此时的PreView界面是这样的:
二、Button
Button是程序用于和用户进行交互的一个重要控件,它可配置的属性和 TextView 是差不多的:
1 <Button
2 android:id="@+id/button"
3 android:layout_width="match_parent"
4 android:layout_height="wrap_content"
5 android:text="Button" />
在主活动中我们可以使用匿名类为button注册一个监听器,当然也可以使用实现接口的方式。
三、EditText
EditText 是程序用于和用户进行交互的另一个重要控件,它允许用户在控件里输入和编辑内容,并可以在程序中对这些内容进行处理,应用场景普遍。我们在布局文件中加入下列代码:
1 <EditText
2 android:id="@+id/edit_text"
3 android:layout_width="match_parent"
4 android:layout_height="wrap_content"
5 android:hint="Type something here"
6 android:textSize="24sp"
7 android:maxLines="2"
8 />
其中的hint用于在输入框里显示一些提示性的文字,然后一旦用户输入了任何内容,这些提示性的文字就会消失。而maxLines则是限定了 EditText的最大行数为两行,这样当输入的内容超过两行时,文本就会向上滚动,而 EditText 则不会再继续拉伸。效果如下:
输入文本超过两行时:
自然,我们可以结合 EditText 与 Button 来完成一些功能,比如当想要通过点击按钮来获取EditText中输入的内容,可以加入下列代码:
1 public class MainActivity extends Activity implements OnClickListener {
2 private Button button;
3 private EditText editText;
4
5 @Override
6 protected void onCreate(Bundle savedInstanceState) {
7 super.onCreate(savedInstanceState);
8 setContentView(R.layout.activity_main);
9 button = (Button) findViewById(R.id.button);
10
11 editText = (EditText) findViewById(R.id.edit_text);
12 button.setOnClickListener(this);
13 }
14
15 @Override
16 public void onClick(View v) {
17 switch (v.getId()) {
18 case R.id.button:
19 String inputText = editText.getText().toString();
20 Toast.makeText(MainActivity.this, inputText,Toast.LENGTH_SHORT).show();
22 break;
23 default:
24 break;
25 }
26 }
27 }
此时编辑完代码后,按下button,屏幕下方就会弹出所编辑好的文本内容。
四、ImageView
ImageView是用于在界面上展示图片的一个控件,使用这个控件之时,我们需要先把一张图片放到 drawable文件夹下(我放的图片是pic.jpg),然后加入下列代码:
1 <ImageView
2 android:id="@+id/image_view"
3 android:layout_width="wrap_content"
4 android:layout_height="wrap_content"
5 android:src="@drawable/pic"
6 />
其中src语句是对图片资源的引用。由于图片的宽和高都是未知的,所以将 ImageView的宽和高都设定为 wrap_content,这样保证了不管图片的尺寸是多少都可以完整地展示出来。现在运行程序后便可看到图片展示在屏幕上。
五、ProgressBar
ProgressBar用于在界面上显示一个进度条, 表示我们的程序正在加载一些数据。
1 <ProgressBar 2 android:id="@+id/progress_bar" 3 android:layout_width="match_parent" 4 android:layout_height="wrap_content" 5 style="?android:attr/progressBarStyleHorizontal" 6 android:max="100" 7 />
我们使用style将其指定成水平进度条,并通过 android:max 属性给进度条设置一个最大值,然后我们便可以在代码中动态地更改进度条的进度。在此之前,我们需要用到 Android控件的可见属性。 所有的Android控件都具有这个属性, 可以通过android:visibility进行指定,可选值有三种,visible、invisible 和 gone。visible 表示控件是可见的,这个值是默认值。invisible 表示控件不可见,但是它仍然占据着原来的位置和大小。gone 则表示控件不仅不可见,而且不再占用任何屏幕空间。我们可以通过代码来设置控件的可见性,使用的是setVisibility()方法,可以传入 View.VISIBLE、View.INVISIBLE 和 View.GONE三种值。现在我们修改MainActivity的代码如下:
1 public class MainActivity extends Activity implements View.OnClickListener {
2 private Button button;
3 private ProgressBar progressBar;
4 @Override
5 protected void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.content_main);
8 button = (Button) findViewById(R.id.button);
9 progressBar = (ProgressBar) findViewById(R.id.progress_bar);
10 button.setOnClickListener(this);
11 }
12 @Override
13 public void onClick(View v) {
14 switch (v.getId()) {
15 case R.id.button:
16 int progress = progressBar.getProgress();
17 progress = progress + 25;
18 progressBar.setProgress(progress);
19 break;
20 default:
21 break;
22 }
23 }
24 }
代码中我们设定progressbar的最大值为100,每按一次按钮其值增加25,图为按了两次按钮的效果图:
六、AlertDialog
AlertDialog可以在当前的界面弹出一个对话框, 这个对话框是置顶于所有界面元素之上的,能够屏蔽掉其他控件的交互能力,因此一般 AlertDialog 都是用于提示一些非常重要的内容或者警告信息。
我们加入代码如下:
1 @Override
2 public void onClick(View v) {
3 switch (v.getId()) {
4 case R.id.button:
5 AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
6 dialog.setTitle("This is Dialog");
7 dialog.setMessage("Something important.");
8 dialog.setCancelable(false);
9 dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
10 @Override
11 public void onClick(DialogInterface dialog, int which) {
12 }
13 });
14 dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
15 @Override
16 public void onClick(DialogInterface dialog, int which) {
17 }
18 });
19 dialog.show();
20 break;
21 default:
22 break;
23 }
24 }
首先通过 AlertDialog.Builder 创建出一个 AlertDialog的实例,然后可以为这个对话框设置标题、内容、可否取消等属性,接下来调用 setPositiveButton()方法为对话框设置确定按钮的点击事件,调用 setNegativeButton()方法设置取消按钮的点击事件,最后调用 show()方法将对话框显示出来。
运行效果如下:
控件的学习在此先告一段落,其他的有需要可以在网上搜一下。
//End.