本章主要介绍常用的控件的使用方法
1. TextView
在界面上显示一段文本信息
activity_main.xml中的代码:
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#00ff00"
android:textSize="24sp"
android:text="This is TextView!"/>
2. Button
在界面上显示一个按钮
activity_main.xml中的代码:
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button"
android:textAllCaps="false" />
接下来我们可以在MainActivity中为Button的点击事件注册一个监听器,如下所示:
public class MainActivity extends AppCompatActivity impLements View . OnClickListener {
@Override
protected void onCreate (Bundle savedInstanceState) {
super . onCreate ( savedInstanceState) ;
setContentView(R. layout. activity_ main);
Button button = (Button) findViewById(R. id . button);
button. set0nClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id. button:
//在此处添加逻辑
break;
default:
break ;
}
}
}
3.editText
可编辑的文本,允许用户在控件里输入和编辑
activity_main.xml中的代码:
<editText
android:id="@+id/edit_Test"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Type something here"
android:maxLines="2" />
我们还可以结合使用EditText与Button来完成一 些功能,比如通过点击按钮来获取EditText中输人的内容。修改MainActivity中的代码,如下所示:
public class MainActivity extends AppCompatActivity implements View .0nClickListener {
private EditText editText;
@0verride
protected void onC reate (Bundle savedInstanceState) {
supe r . onC reate ( savedInstanceState) ;
setContentView(R. layout .activity_ main);
Button button = (Button) findViewById (R. id. button);
editText = (EditText) findViewById(R. id. edit_ _text);
button. setOnClickListener(this);
}
@0ver ride
public void onClick(View v) {
switch (v.getId()) {
case R. id . button:
String inputText = editText. getText().toString();
Toast . makeText (MainActivity. this, inputText,
Toast. LENGTH_ SHORT) . show();
break;
default :
break;
}
}
}
4.ImageView
在界面上显示图片
activity_main.xml中的代码:
<ImageView
android:id="@+id/image_Test"
android:layout_width="wrap_content"
android:layout_height="471dp"
android:src="@drawable/img_1" />
我们还可以在程序中通过代码动态地更改ImageView中的图片,然后修改MainActivity 的代码,如下所示:
public class MainActivity extends AppCompatActivity implements View .0nClickListener {
private EditText editText;
private ImageView imageView;
@0verride
protected void onCreate( Bundle savedInstanceState) {
super . onC reate (savedInstanceState);
setContentView(R. layout .activity_ main);
Button button = (Button) findViewById(R. id. button);
editText = (EditText) findViewById(R. id. edit_ text);
imageView= . (ImageView) findViewById(R. id . image_ view) ;
button. set0nClickl istener(this);
}
@0verride
public void onClick(View v) {
switch (v.getId()) {
case R. id. button:
imageView. setImageResource(R. drawable.img_ 2);
break;
default :
break;
}
}
}
5.ProgressBar
在界面上显示一个进度条
activity_main.xml中的代码:
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
android:max="100" />
接下来我们就来尝试实现,点击一下按钮让进度条消失,再点击一下按钮让进度条出现的这种效果。修改MainActivity中的代码,如下所示:
publ1c class MainActiv1ty extends AppCompatActivity implements View .0nClickL istener {
private EditText editText;
private ImageView imageView;
private ProgressBar progressBar;
@override
protected vo1d onCreate( Bundle savedInstanceState) {
super . onCreate(savedInstanceState);
setContentView(R. layout . activity_ main);
Button button=(Button) findViewById(R. id. button);
editText = (EditText) findViewById(R. id. edit_ text);
imageView=(ImageView) findV1ewById(R. id. image_ v1ew);
progressBar=(ProgressBar) findViewById(R. id.progress_ bar);
button. set0nClickListener(this);
}
@0verride
public void onClick(View v) {
switch (v.getId()) {
case R.id. button:
if (progressBar . getVisibility() ==View. GONE) {
progressBar . setVisibility(View. VISIBLE);
} else {
progressBar . setVisibility (View. GONE) ;
}
break;
default:
break;
}
}
}
指定成水平进度条后,我们还可以通过android:max属性给进度条设置一个最大值,然后在代码中动态地更改进度条的进度。修改MainActivity中的代码,如下所示:
public class MainActivity extends AppCompatActivity implements View. 0nClickListener {
...
@Override
public void onClick(View v) {
switch (v.getId()) {
case R. id . button:
int progress = progressBar .getProgress();
progress = progress + 10;
progressBar. setProgress(progress);
break; .
default:
break;
}
}
}
6.AlertDialog
可以在当前的界面弹出一个对话框
这个对话框是置顶于所有界面元素之上的,能够屏蔽掉其他控件的交互能力,因此AlertDialog 一般都是用于提示一些非常重要的内容或者警告信息。比如为了防止用户误删重要内容,在删除前弹出–个确认对话框。下面我们来学习一下它的用法,修改MainActivity中的代码,如下所示:
public class MainActivity extends AppCompatActivity implements View . OnClickListener {
...
@0verride
public vold onClick(View v) {
switch (v.getId()) {
case R. id. button:
AlertDialog . Builder dialog = new ALertDialog . Builder (MainActivity.this);
dialog. setTitle("This is Dialog");
dialog. setMessage("something important.");
dialog. setCancelable(false);
dialog. setPositiveButton("0K", new DiaLogInterface.
onClickListener() {
@0verride
public void onClick(DialogInterface dialog, int which) {
});
dialog. setNegativeButton("Cancel", new DialogInterface.
onClickListener() {
@0verride
public void onCLick(DialogInterface dialog, int which) {
});
dialog. show();
break;
default:
break;
}
}
}
7.ProgressDialog
可以在界面上弹出一个对话框,都能够屏蔽掉其他控件的交互能力。
ProgressDialog和AlertDialog有点类似,都可以在界面上弹出一个对话框,都能够屏蔽掉其他控件的交互能力。不同的是,ProgressDialog 会在对话框中显示一个进度条, 一般用于表示当前操作比较耗时,让用户耐心地等待。它的用法和AlertDialog 也比较相似,修改MainActivity中的代码,如下所示:
public class MainActivity extends AppCompatActivity implements View. 0nClickListener {
...
@0verride
public void onCl1ck(V1ew v) {
switch (v. getId(0) {
case R.id. button:
ProgressDialog. progressDialog = new ProgressDialog
(MainActivity. this);
progressDiaLog.setTitle("This is ProgressDialog");
progressDialog.setMessage("Loading..");
progressDialog. setCancelable(true);
progressDialog. show();
break;
default:
break;
}
}
}
可以看到,这里也是先构建出一个ProgressDialog对象,然后同样可以设置标题、内容、可否取消等属性,最后也是通过调用show()方法将ProgressDialog显示出来。重新运行程序,点击按钮后,效果如图所示。