4.基本UI组件
4.1文本类组件
4.1.1 文本框组件 <TextView />
常用属性:android:layout_width
android:layout_height
android:text
android:textSize
android:textColor
android:singleLine(值为布尔型)是否为单行
4.1.2编辑框组件 <EditText />
常用属性:android:layout_width
android:layout_height
android:hint
android:inputType="textPassword" 输入密码之后会变成小黑点
android:inputType="number" 只能输入数字
android:drawableLeft=android:drawableStart="@mipmap/img1" 在编辑框文字左侧绘制(添加)图像
android:drawableBottom 在编辑框文字底部绘制图像
android:drawableEnd= android:drawableRight 在编辑框文字右侧绘制图像
android:drawableTop 在编辑框文字顶部绘制图像
android:drawablePadding 设置文字与图片之间的距离
android:lines 只能显示的行数,多的会向上,通过向下拉可以看到上面的内容
后台获取前台输入的内容:
EditText editText=findViewById(R.id.edittext1);
editText.getText();
4.2按钮类组件
4.2.1 普通按钮
为普通按钮添加单击事件监听器
- 匿名内部类作为点击事件监听器
Button button=findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "单击了按钮1", Toast.LENGTH_SHORT).show();
}
});
(2)通过OnClick属性实现
①在Activity中编写一个包含View类型参数的方法。
public void MyClick(View view){
Toast.makeText(MainActivity.this,"单击了按钮1",Toast.LENGTH_SHORT).show();
}
②将android:onClick属性指定为步骤①中的方法名。
android:onClick="MyClick"
4.2.2 图片按钮 <ImageButton />
(1)图片按钮和普通按钮的区别:
相同点:单击时都可以触发onClick事件
不同点:图片按钮没有android:text属性,文字是在制作图片时加上的
(2)android:background="#0000"背景设置为透明,如果不设置,则是灰色的
注:getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏显示
4.2.3 单选按钮 <RadioButton /> (显示效果为一个未选中小圆)
(1)属性:android:text
android:checked(值为布尔型,是否选中)
android:layout_width
android:layout_height
- <RadioGroup></RadioGroup>内包含组件<RadioButton />保证了在一组单选按钮中只能有一个被选中。
- ①在改变单选按钮的值时获取当前的值
前台关键代码:
<RadioGroup
android:id="@+id/radiogroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:text="男"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<RadioButton
android:text="女"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<RadioButton
android:text="保密"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RadioGroup>
后端关键代码:
RadioGroup radioGroup=findViewById(R.id.radiogroup1);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {//选中状态改变的监听器
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton radioButton=findViewById(checkedId);
Toast.makeText(MainActivity.this,"性别:"+radioButton.getText(),Toast.LENGTH_LONG).show();
}
});
②在单击其他按钮来获取按钮的值,实现点击提交按钮,显示选中的值
前台:(在上述代码后添加)
<Button
android:id="@+id/button1"
android:text="提交"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
后台: (在上述代码后添加)
Button button=findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for(int i=0;i<radioGroup.getChildCount();i++){
RadioButton r= (RadioButton) radioGroup.getChildAt(i);
if(r.isChecked()){//被选中了
Toast.makeText(MainActivity.this,r.getText(),Toast.LENGTH_SHORT).show();
break;
}
}
}
});
4.2.4 复选框 <CheckBox />(显示效果为一个未选中小方框)
(1)属性
android:id
android:text
android:layout_width
android:layout_height
android:checked="true" 默认是选中状态
不需要像单选框那样,有一个<RadioGroup></RadioGroup>包裹,需要一行,添加一个<CheckBox />即可
- 样例
前端:
<CheckBox
android:id="@+id/like1"
android:text="体育"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
后端监听:
CheckBox like1;
like1=findViewById(R.id.like1);
like1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(like1.isChecked()){
Toast.makeText(MainActivity.this,like1.getText(),Toast.LENGTH_SHORT).show();
}
}
});
4.3日期时间类组件
4.3.1 日期选择器 <DatePicker />
(1)属性
android:id
android:layout_width
android:layout_height
例子:前台代码:
<DatePicker
android:id="@+id/datepicker"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
后台代码:
public class MainActivity extends AppCompatActivity {
int year,month,day;
DatePicker datePicker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
datePicker=findViewById(R.id.datepicker);
Calendar calendar=Calendar.getInstance();
year=calendar.get(Calendar.YEAR);
month=calendar.get(Calendar.MONTH);
day=calendar.get(Calendar.DAY_OF_MONTH);
//初始化日期选择器
datePicker.init(year, month, day, new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
MainActivity.this.year=year;
MainActivity.this.month=monthOfYear;
MainActivity.this.day=dayOfMonth;
show(year,monthOfYear,dayOfMonth);
}
});
}
private void show(int year,int month,int day){
String str=year+"年"+(month+1)+"月"+day+"日";
Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();
}
}
4.3.2时间选择器 <TimePicker />
例子:前台代码:
<TimePicker
android:id="@+id/timepicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
后端:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TimePicker timePicker=findViewById(R.id.timepicker);
timePicker.setIs24HourView(true);//默认是12小时的,加这行代码改为24小时
timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
String s=hourOfDay+"时"+minute+"分";
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
}
});
}
}
4.3.3 计时器 <Chronometer />
(1)常用方法:
setBase() 设置计时器的起始时间
setFormat() 设置显示时间的格式
start() 指定开始计时
stop() 指定停止计时
setOnChronometerTickListener() 为计时器绑定事件监听器,当计时器改变时触发该监听器
例子:前台代码:
<Chronometer
android:id="@+id/chronometer"
android:textColor="#F44336"
android:layout_marginTop="10dp"
android:layout_alignParentRight="true"
android:layout_marginRight="8dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
后台代码:
public class MainActivity extends AppCompatActivity {
Chronometer chronometer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chronometer=findViewById(R.id.chronometer);
chronometer.setBase(SystemClock.elapsedRealtime());//SystemClock.elapsedRealtime()获取当前系统时间
chronometer.setFormat("%s");
chronometer.start();
chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
if(SystemClock.elapsedRealtime()-chronometer.getBase()>=60000) {//大于六十秒,就要停止
chronometer.stop();
}
}
});
}
}