Android实验2.1

本文最后更新于:1 年前

实验 2 Android 用户界面

2.1 实现如下的程序功能(2 学时)

要求:

1、基于线性布局与相对布局,分别实现图 1 所示的用户界面。

2、点击“提交”按钮,对用户输入进行检查,“姓名”为必填项,未填姓名会
显示提示信息。

3、点击“提交”按钮,若姓名输入不为空,将显示用户输入的姓名、性别、专
业、兴趣爱好信息,显示方式采用 Toast 显示。如图 3 所示。

activity_main.xml文件

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:text="姓名"
android:textColor="@color/black"
android:textSize="30sp"
android:layout_height="wrap_content">

</TextView>
<EditText
android:id="@+id/name"
android:layout_width="300dp"
android:textSize="25sp"
android:layout_height="wrap_content">
</EditText>
</LinearLayout>
<LinearLayout
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:text="性别"
android:textColor="@color/black"
android:textSize="30sp"
android:layout_height="wrap_content">

</TextView>
<CheckBox
android:id="@+id/man"
style="@style/Widget.AppCompat.CompoundButton.RadioButton"
android:layout_width="wrap_content"
android:text="男"
android:shadowRadius="100"
android:textSize="30sp"
android:layout_marginLeft="30dp"
android:layout_height="wrap_content">

</CheckBox>
<CheckBox
style="@style/Widget.AppCompat.CompoundButton.RadioButton"
android:id="@+id/woman"
android:layout_width="wrap_content"
android:text="女"
android:textSize="30sp"
android:layout_marginLeft="30dp"
android:layout_height="wrap_content">

</CheckBox>

</LinearLayout>
<LinearLayout
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:text="专业"
android:textColor="@color/black"
android:textSize="30sp"
android:layout_height="wrap_content">

</TextView>

<Spinner
android:theme="@style/life_spinner_style"
android:id="@+id/zhuanye"
android:entries="@array/ctype"
android:layout_width="wrap_content"
android:layout_height="37dp"
>
</Spinner>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_marginTop="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:text="兴趣爱好"
android:textColor="@color/black"
android:textSize="35sp"
android:layout_height="wrap_content">

</TextView>
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/music"
android:layout_width="wrap_content"
android:text="音乐"
android:textSize="30sp"
android:layout_marginLeft="30dp"
android:layout_height="wrap_content">

</CheckBox>
<CheckBox
android:id="@+id/sport"
android:layout_width="wrap_content"
android:text="运动"
android:textSize="30sp"
android:layout_marginLeft="30dp"
android:layout_height="wrap_content">

</CheckBox>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/swimming"
android:layout_width="wrap_content"
android:text="游泳"
android:textSize="30sp"
android:layout_marginLeft="30dp"
android:layout_height="wrap_content">

</CheckBox>
<CheckBox
android:id="@+id/read"
android:layout_width="wrap_content"
android:text="阅读"
android:textSize="30sp"
android:layout_marginLeft="30dp"
android:layout_height="wrap_content">

</CheckBox>
</LinearLayout>
<LinearLayout
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/tijiao"
android:layout_width="wrap_content"
android:text="提交"
android:layout_marginLeft="30dp"
android:layout_height="wrap_content">

</Button>
<Button
android:id="@+id/quxiao"
android:layout_width="wrap_content"
android:text="取消"
android:layout_marginLeft="30dp"
android:layout_height="wrap_content">

</Button>
</LinearLayout>

</LinearLayout>

</LinearLayout>

创建array.xml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8"?>
<resources>

<string-array name="ctype">
<item>计算机科学与技术</item>
<item>数据科学与大数据技术</item>
<item>信息安全</item>


</string-array>
<style name="life_spinner_style" parent="@android:style/Widget.TextView.SpinnerItem">
<item name="android:textSize">25sp</item>
</style>

</resources>

MainActivity.java文件

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package com.example.lab1;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
private EditText name;
private Spinner zhuanye;
private Button tijiao;
private CheckBox man,woman,music,sport,swimming,read;
String output;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tijiao=findViewById(R.id.tijiao);//提交按钮
name=findViewById(R.id.name);//姓名输入的内容
zhuanye=findViewById(R.id.zhuanye);//专业列表
man=findViewById(R.id.man);
woman=findViewById(R.id.woman);
swimming=findViewById(R.id.swimming);
read=findViewById(R.id.read);
sport=findViewById(R.id.sport);
music=findViewById(R.id.music);
tijiao.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View view) {
output="你好,"+name.getText().toString()+"!\n";
if(man.isChecked())output+="你的性别是:"+man.getText().toString()+"!\n";
if(woman.isChecked())output+="你的性别是:"+woman.getText().toString()+"!\n";
output+="你的专业是:"+zhuanye.getSelectedItem().toString()+"!\n";
output+="你的个人爱好有:";
int a=0;//a的意义,判断是否之前选择过运动,若选择过运动,选其他运动时,则先加’,‘;
if(music.isChecked())
{
a++;
output+=music.getText().toString();
}
if(sport.isChecked())
{
a++;
if(a!=0)output+=",";
output+=sport.getText().toString();

}
if(swimming.isChecked())
{
a++;
if(a!=0)output+=",";
output+=swimming.getText().toString();
}
if(read.isChecked())
{
a++;
if(a!=0)output+=",";
output+=read.getText().toString();
}
if(a!=0)output+="!";


if(name.getText().toString().isEmpty()) {
Toast.makeText(MainActivity.this, "请输入您的姓名", Toast.LENGTH_SHORT).show();

}
else{
Toast.makeText(MainActivity.this,output,Toast.LENGTH_SHORT).show();


}


}
});

}
}

问题讨论:

1、问题:性别框的选择,默认的是正方形的,图片给的是圆形的
解决方法:在csdn查询可知,在.xml文件中checkbox控件中加入
style=”@style/Widget.AppCompat.CompoundButton.RadioButton”语句
即可解决。
2、问题:专业中的列表选择控件没见过。
解决方法:在bing上查询可知,用spinner控件,在value中写一个array数组储存专业。
3、问题:spinner中文字过小,textsize不能用。
解决方法:查询可知,在创建的array.xml文件中加入

语句,即可调节大小。
4、问题:点击提交按钮输出的内容,我用多个Toast输出,但是就输出了第一个。
解决方法:把需要输出的内容都加入字符串output中,一同输出。
5、问题:不知道如何获取专业列表中的内容。
解决办法:查询可知,用zhuanye.getSelectedItem().toString()方法来获取。


Android实验2.1
http://example.com/2022/04/21/Android实验1/
作者
zzh
发布于
2022年4月21日
更新于
2022年5月19日
许可协议
原文链接: HTTPS://ZHANGZHIHAO-BLOG.GITHUB.IO
版权声明: 转载请注明出处!