安卓开发入门4-基础控件


基础控件

以一个小案例介绍常用的控件(组件)

image-20210617191149943
  • 关于gravity和layout_gravity

gravity:指的是文字在控件中的对齐方式。或者子view在父view的对齐方式(在父view中设置)。

layout_gravity:是LineaLayout的属性,是用于指定控件在布局中的对齐方式,当LineaLayout的排列方式是horizontal时,只有在垂直方向上的对齐方式才会生效,因为此时水平方向的长度是不固定的,每添加一个控件,水平方向上的长度都会改变,因而无法指定该方向上的对齐方式。同样的道理,当LineaLayout的排列方式为vertical时,之友水平方向上的对齐方式才会生效。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/ic_launcher_round"
android:gravity="center_horizontal"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:text="Hello World!" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:gravity="center_horizontal"
android:text="@string/fuck_you" />

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher" />

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="40dp"
android:layout_marginRight="30dp" />

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="40dp"
android:layout_marginRight="30dp" />

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="40dp"
android:layout_marginRight="30dp"
android:background="@mipmap/ic_launcher"
android:text="@string/fuck_you" />


</LinearLayout>
image-20210617194556566

TextView的继承关系

image-20210617194652244 image-20210617194830040
  • ScrollView 只能放一个直接子控件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".TextActivity">

<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/long_text"
android:lineSpacingMultiplier="2"
android:textColor="#00ff00"
android:lineSpacingExtra="15sp"/>

</ScrollView>
image-20210617195436471

image-20210617195930772

image-20210617200146035

EditText

image-20210617200336820

输入类型,输入提示,最大长度

image-20210617203446965

Button

注册点击事件

和Swing一样,注册监听器即可

  • 根据ID找到View

  • 实现自定义类继承自onClickListener

  • 使用匿名内部类

1
2
3
4
5
6
7
Button btn = findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

}
});
  • 在当前Activity实现OnClickListener接口,此时注册为this

  • 在xml里绑定,需要在Activity中写方法

1
2
3
4
5
6
public void fuck(View view) {
int id = view.getId();
switch (id){
case R.id.button:break;
}
}

注意这里获取组件的方式

1
android:onClick="fuck"

ImageView

image-20210617205817380
  • 添加资源到文件夹需要全小写并且不能以数字开头,图片一般放mipmap
  • 在Java文件中找资源要到R类中找索引,而在xml中只需要@文件夹名就好

ProgressBar进度条

image-20210617210253387

一段设置进度条代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
final ProgressBar bar1 = findViewById(R.id.pro1);

new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
bar1.setProgress(i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();

这里演示了常用属性

1
2
3
4
5
6
7
8
9
10
11
12
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:progress="100"
android:max="1000"
android:indeterminate="true"/>
<ProgressBar
android:id="@+id/pro1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"/>

注意,在安卓4.0之后不能在线程中操作控件,除了进度条

无焦点提示

Toast

1
Toast.makeText(this,"姓名和密码不能为空",Toast.LENGTH_SHORT).show();
  • 三个参数分别为上下文,提示信息,出现时间长短

CheckBox

  • button下的
image-20210617222930805

RadioButton

image-20210617223038948
  • 一组RadioButton只能选一个

ToggleButton

image-20210617223214503

SeekBar

image-20210617223300347
  • 比如音量条
image-20210617223403571
  • 开始拖动,停止拖动和发生变化

← Prev 安卓开发入门5-约束布局 | 安卓开发入门3-UI布局 Next →