在讲几个控件前先讲一下几个在xml中常用的几个参数的区别
dp、sp的区别:这里引用简书
match_parent:表示让当前空件和父布局的大小一样
wrap_content:表示让当前控件的大小能够刚好包含著里面的
android:gravity:是让控件中的内容处于什么位置,如:TextView中的android:gravity=“center”,是让text处于textview的中间。可以用 “|” 来同时指定多个值
layout_gravity:让控件处于父布局的什么位置,如:android:layout_gravity=“center”,让控件处于父布局的中间
layout_margin:是用于控件与控件之间,如android:layout_marginLeft=“8dp”,是让该控件距离父布局的左边8dp
android:padding:适用于控件与控件中的内容之间,如android:paddingLeft="8dp"是上控件中的内容距离控件的左边8dp
android:visibility:用于设置控件的可见、不可见、消失.
①可见(visibility=“visible”):这是个默认值,表示控件可见并占用空间
②不可见(visibility=“invisible”):表示控件不可见,但仍旧占用空间
③消失(visibility=“gone”):表示控件不可见,并不占用空间
1.TextView
TextView可以说是Android中最简单的一个控件了, 它主要用于在界面上显示一段文本信息,比如“Hello world!"。
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:text="hello word!!"
android:layout_height="wrap_content" />
我们还可以通过android: textSize属性可以指定文字的大小;
通过android :textColor属性可以指定文字的颜色
通过android:textStyle:设置字体风格,三个可选值:normal(无效果),bold(加粗),italic(斜体)
<TextView
android:textSize="30sp"
android:textColor="#EA5246"
android:textStyle="italic"
android:id="@+id/text_view"
android:layout_width="match_parent"
android:text="helloword"
android:layout_height="wrap_content" />
这样就有了一个红色、斜体、30sp大小的hello world了
2.Button
Button和他的名字一样,就是按钮。Button有个特点,它的txet中在使用字母时显示出来的值都是默认大写的,可以调用textAllCaps="false"来关闭默认大写。
<Button
android:text="getSomething"
android:textAllCaps="false"
android:id="@+id/btn"
android:layout_width="120dp"
android:layout_height="50dp" />
3.EditText
EditText是程序用于和用户进行交互的另一个重要控件,它允许用户在控件里输入和编辑内容,并可以在程序中对这些内容进行处理。EditText 的应用场景非常普遍,在进行发短信、发微博、聊QQ等操作时,你不得不使用EditText。那让我们来看下EditText的用法吧,在xml中加入以下内容:
<EditText
android:id="@+id/editText"
android:hint="type something Interesting"
android:layout_width="match_parent"
android:layout_height="40dp" />
这样我们就得到了一个EditText。但EditText还有一些其他的属性:
①hint(提示文本)——就是在还没有输入时,框中会有一些字,输入后字就会消失,这些字就是在hint中现实的,
用例:hint=“type something here”
②maxLines:用于限制edittext中输入内容的最大行数,如maxLines=“2”——指定了EditText中的最大行数为2行
③可在java中使用editText.getText()来获取在EditText中输入的类容,
如String inputText = editText.getText().toString()——获取EditText中的内容并转为string型,再赋值给inputText
我们先修改xml中的代码
<EditText
android:maxLines="1"
android:background="@drawable/bac_1"
android:paddingLeft="8dp"
android:id="@+id/editText"
android:hint="type something Interesting"
android:layout_width="match_parent"
android:layout_height="40dp" />
其中android:background="@drawable/bac_1是为EditText加了一个黑色圆角边框,方法是在drawable目录下新建xml文件,然后编辑以下代码:(由于黑色边框会挡住一点框中输入的内容所以使用paddingLeft="8dp将内容左移8dp)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 设置一个黑色边框 -->
<stroke android:width="3dp" android:color="#000000"/>
<corners android:radius="8sp"/>
</shape>
为了获取编辑框中的内容,我们需要修改java代码:
private EditText mEdit;
private Button btn;
初始化EditText和Button,并为Button设置监听
private void initView() {
mEdit = findViewById(R.id.editText);
btn = findViewById(R.id.btn);
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn:
String input = mEdit.getText().toString();
Toast.makeText(v.getContext(),input,Toast.LENGTH_SHORT).show();
break;
}
}
然后在编辑框中输入内容,点击按钮就能用Toast显示出来了
4.ImageView
ImageView是用于在界面上展示图片的一个控件。
修改xml中的代码如下:
<ImageView
android:src="@mipmap/ic_launcher"
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
我们就得到了一个图片
5.ProgressBar
ProgressBar用于在界面上显示- -个进度条,表示我们的程序正在加载一些些数据。它的用法也非常简单,修改activity_ main.xml 中的代码,如下所示:
<ProgressBar
android:id="@+id/progressbar"
android:visibility="visible"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
ProgressBar还有以下特点:
①默认是圆圈,可通过style="@style/Widget.AppCompat.ProgressBar.Horizontal"设置为直线型(书上说还有其它类型的,但现在好像没了)
②可以在xml处预先设置一个进度条最大值,max="",例如:android:max=“100”——将最大值设置为100
可以在java代码里通过mPgbar.getProgress()来动态获取进度条的当前进度(得到的为int型)
通过mPgbar.setProgress(progress)来动态设置进度条的进度,括号中的progress为一个int型,表示即将设置成的进度。
先修改xml中的代码:
<ProgressBar
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:id="@+id/progressbar"
android:visibility="visible"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"/>
<Button
android:id="@+id/btn4"
android:text="getProgress"
android:layout_width="120dp"
android:layout_height="50dp" />
修改java中的代码:
private ProgressBar mPgbar;
private Button mBtn4;
private void initView() {
mEdit = findViewById(R.id.editText);
btn = findViewById(R.id.btn);
**mPgbar = findViewById(R.id.progressbar);
mBtn4 = findViewById(R.id.btn4);**
btn.setOnClickListener(this);
**mBtn4.setOnClickListener(this);**
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn:
String input = mEdit.getText().toString();
Toast.makeText(v.getContext(),input,Toast.LENGTH_SHORT).show();
break;
case R.id.btn4:
int progress = mPgbar.getProgress();
progress = progress + 10;
mPgbar.setProgress(progress);
if (mPgbar.getVisibility() == View.GONE){
mPgbar.setVisibility(View.VISIBLE);
}else {
mPgbar.setVisibility(View.GONE);
}
break;
}
}
6.AlertDialog
一个信息的弹框,能够屏蔽其他控件的交互能力,置顶于所有界面元素之上,因此AlertDialog是用于提示一些非常重要的内容或者警告信息。比如为了防止用户误删重要的内容,在删除前弹出一个确认对话框。特点:
①通过AlertDialog.Builder来建立
②setIcon——设置图标;setTitle——设置标题;setMessage——设置内容;setPositiveButton——设置点击确认的监听;
setNegativeButton——设置点击取消的监听;
setCancelable 点击手机返回按键是否允许对话框消失,
setCanceledOnTouchOutside(这个现在好像没了) 点击对话框外部区域是否允许对话框消失
③需要通过builder.show()来启动
使用如下:
xml中的代码:
<Button
android:layout_gravity="center"
android:id="@+id/btn2"
android:text="AlertDialog"
android:textAllCaps="false"
android:layout_width="120dp"
android:layout_height="50dp" />
新家一个Button
java中的代码:
private Button mBtn2;
private ProgressBar mPgbar;
private void initView() {
mEdit = findViewById(R.id.editText);
btn = findViewById(R.id.btn);
mBtn2 = findViewById(R.id.btn2);
mPgbar = findViewById(R.id.progressbar);
mBtn4 = findViewById(R.id.btn4);
btn.setOnClickListener(this);
mBtn2.setOnClickListener(this);
mBtn4.setOnClickListener(this);
}
新建函数setAlertDialog(),再点击mBtn2时调用:
private void setAlertDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("THIS IS TITLE");
builder.setMessage("I'M CONTENT");
builder.setIcon(R.mipmap.ic_launcher);
builder.setCancelable(false);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this,"YOU CLICK OK",Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this,"U DENY IT",Toast.LENGTH_SHORT).show();
}
});
builder.show();
}
7.ProgressDialog(貌似已被弃用):
AlertDialog能够屏蔽其他控件的交互能力,置顶于所有界面元素之上, 因此AlertDialog是用于提示一些非常重要的内容或者警告信息。比如为了防止用户误删重要的内容,在删除前弹出一个确认对话框。特点:
①setTile()——设置标题;setMessage()——来设置内容;setCancelable()来设置是否可被取消
②通过 .show()来启动
在xml中新加一个Button:
<Button
android:layout_gravity="right"
android:id="@+id/btn3"
android:text="ProgressDialog"
android:textAllCaps="false"
android:layout_width="120dp"
android:layout_height="50dp" />
修改java中的代码:
private Button mBtn3;
private void initView() {
mEdit = findViewById(R.id.editText);
btn = findViewById(R.id.btn);
mBtn2 = findViewById(R.id.btn2);
mPgbar = findViewById(R.id.progressbar);
mBtn3 = findViewById(R.id.btn3);
mBtn4 = findViewById(R.id.btn4);
btn.setOnClickListener(this);
mBtn2.setOnClickListener(this);
mBtn3.setOnClickListener(this);
mBtn4.setOnClickListener(this);
}
新建setProgressDialog()函数,在点击mBtn3时调用:
其中progressdialog.setCancelable()要设为true,如果设为false的话就没办法取消显示这个控件了
private void setProgressDialog() {
ProgressDialog progressdialog = new ProgressDialog(MainActivity.this);
progressdialog.setTitle("This is ProgressDialog");
progressdialog.setMessage("Loading...");
progressdialog.setCancelable(true);
progressdialog.show();
}