本文最后更新于: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; 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()方法来获取。