实验要求:基于线性布局与相对布局,分别实现图 1 所示的用户界面。
采用线性布局或者相对布局实现较为简单,这里我是用线性布局和相对布局嵌套实现的。代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请输入基本信息"
android:id="@+id/ip_port"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ip_port"
android:orientation="horizontal"//水平排列
android:id="@+id/ip_address">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"//一般用sp表示字体大小
android:text="姓名:"
/>
<EditText
android:id="@+id/text_ip"
android:layout_width="200dp"//一般用dp表示空间大小
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ip_address"
android:id="@+id/port_number">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="学号:"
/>
<EditText
android:id="@+id/text_port"
android:layout_width="200dp"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/port_number"
android:id="@+id/ip_sex">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="性别:"
/>
<RadioGroup //性别是单选按钮,不是男就是女,所以要用radiogroup
android:id="@+id/rg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center_horizontal">
<RadioButton
android:id="@+id/male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="男" />
<RadioButton
android:id="@+id/femle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="女"/>
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ip_sex"
android:id="@+id/interest">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="兴趣爱好:"/>
<CheckBox //兴趣爱好可以选择多个,要用多选按钮checkbox
android:id="@+id/cb01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="音乐" />
<CheckBox
android:id="@+id/cb02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="运动" />
<CheckBox
android:id="@+id/cb03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="游泳" />
<CheckBox
android:id="@+id/cb04"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="阅读" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/interest"
android:id="@+id/zhuanye">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="专业:"/>
<Spinner //专业显示需要下拉框来显示
android:layout_width="300dp"
android:layout_height="64dp"
android:entries="@array/专业"
android:spinnerMode="dialog"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/zhuanye"
android:layout_centerHorizontal="true"
tools:ignore="UnknownId">
<Button
android:id="@+id/ConnectPi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="提交"
android:onClick="Check"
/>
<TextView
android:id="@+id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"/>
<Button
android:id="@+id/reset_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
package com.example.myapplication1;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.Toast;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;
import android.widget.RadioGroup;
import android.widget.RadioButton;
import android.widget.CheckBox;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.ConnectPi);
Button button1 = (Button) findViewById(R.id.reset_text);
TextView tv=(TextView)findViewById(R.id.info);
final EditText et=(EditText)findViewById(R.id.text_ip);//获取姓名信息
final RadioGroup sex=(RadioGroup) findViewById(R.id.rg);
final CheckBox music=(CheckBox)findViewById(R.id.cb01);
final CheckBox yundong=(CheckBox)findViewById(R.id.cb02);
final CheckBox swim=(CheckBox)findViewById(R.id.cb03);
final CheckBox read=(CheckBox)findViewById(R.id.cb04);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String Tex=et.getText().toString();//存文本信息
String Red="";//存单选按钮组信息
String Com="";//存复选按钮信息
for(int i=0;i<sex.getChildCount();i++){
RadioButton RB=(RadioButton) sex.getChildAt(i);
if(RB.isChecked())
{
Red=RB.getText().toString();
//Toast.makeText(MainActivity.this, ""+RB.getText(), Toast.LENGTH_SHORT).show();
//tv.setText(RB.getText());
break;
}
}
if(music.isChecked())
Com+=music.getText().toString()+" ";
if(yundong.isChecked())
Com+=yundong.getText().toString()+" ";
if(swim.isChecked())
Com+=swim.getText().toString()+" ";
if(read.isChecked())
Com+=read.getText().toString()+" ";
if(!Tex.equals("")) {
Toast.makeText(MainActivity.this, "你好!" + Tex +" "+ " 你的性别:" + Red+" "+" 你的兴趣爱好:"+Com, Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "提交失败,请重新输入姓名", Toast.LENGTH_SHORT).show();
}
}
});
}
}
spinner添加数据资源有很多,我采用了在res文件夹下面的资源目录values里创建了要显示专业的数组,通过entries引用,数组定义如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="专业">
<item>计算机科学与技术</item>
<item>大数据</item>
<item>信息安全</item>
<item>自动化</item>
<item>人工智能</item>
</string-array>
</resources>