如何更改Radio Button的选中样式
效果描述:
Radio Button选中与未选中时显示为其他样式
效果实现原理:
通过直接在layout中设置Button的style 并附带属性 button=@null
优点:
节省代码量和时间,应用性广泛
代码:
在drawable新建 Resource File 添加代码
<item android:drawable="@mipmap/two" android:state_checked="true" ></item>
<item android:drawable="@mipmap/three"></item>
state_checked属性true为选中样式,false为未选中样式
drawable属性可以放置图片,但是Studio不会自动查找,需手动输入
亦可以:在drawable新建 Image Asset 中Icon Type 选择 Action Bar and Tab Icons 中进行对图标的设置与选择
Dialog对话框
对话框大致分类:
1.普通的标准对话框
AlertDialog.Builder builder1=new AlertDialog.Builder(MainActivity.this);
builder1.setTitle("对话框1");
builder1.setIcon(R.drawable.one);
builder1.setMessage("123");
builder1.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"确定",Toast.LENGTH_SHORT).show();
}
});
builder1.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"取消",Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog1=builder1.create();
dialog1.show();
其中 AlertDialog.Builder 是创建对话框创建者
setTitle-----设置标题
setIcon-----设置图标
setMessage-----设置内容
setPositiveButton-----确定按钮的监听器
setNegativeButton-----取消按钮的监听器
create-----创建对话框
以上方法均为 AlertDialog.Builder对象的方法
2.单选对话框
final String[] str2=new String[]{"1","2","3"};
builder5.setSingleChoiceItems(str2, 2, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"选择"+str2[which],Toast.LENGTH_SHORT).show();
}
});
setSingleChoiceItems-----单选列表的监听器
参数分别为 单选按钮的内容,默认选择,监听器
3.多选对话框
final String[] str=new String[]{"1","2","3"};
final boolean[] flags=new boolean[]{false,false,false};
builder4.setMultiChoiceItems(str, flags, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
flags[which]=isChecked;
}
});
boolean数组 是用来存放是否被选择的
setMultiChoiceItems-----多选列表的监听器
参数分别为 多选按钮的内容,是否被选择,监听器
4.自定义对话框 *
View view=View.inflate(MainActivity.this,R.layout.layout,null);
Button but=view.findViewById(R.id.but);
builder6.setView(view);
but.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog6.dismiss();
}
});
思路为: 创建相应的视图对象并通过 setView 方法传入
dismiss----对话框消失
5.进度条对话框
final ProgressDialog dialog=new ProgressDialog(this);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setMax(100);
final Timer timer=new Timer();
timer.schedule(new TimerTask() {
int progress=0;
@Override
public void run() {
if(progress==100){
dialog.dismiss();
timer.cancel();
}
dialog.setProgress(progress+=20);
}
},0,1000);
通过 ProgressDialog类创建该对话框,此处使用计时器来模拟效果
但是ProgressDialog类已经在level 26已经被弃用,可以用自定义代替
6.万年历对话框
Calendar calendar1=Calendar.getInstance();
new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Toast.makeText(MainActivity.this,year+"--"+(month+1)+"--"+dayOfMonth,Toast.LENGTH_SHORT).show();
}
},calendar1.get(Calendar.YEAR),calendar1.get(Calendar.MONTH),calendar1.get(Calendar.DAY_OF_MONTH)).show();
创建Calendar对象
OnDateSetListener-----日历的监听器
参数为: 上下文,监听器,日历对象的年,月,日
代码较少
7.时间对话框
new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Toast.makeText(MainActivity.this,hourOfDay+":"+minute,Toast.LENGTH_SHORT).show();
}
},calendar2.get(Calendar.HOUR),calendar2.get(Calendar.MINUTE),true).show();
OnTimeSetListener-----时间的监听器
参数为:上下文,监听器,日历对象的小时,分钟
总结:
对话框实际只有年份及时间,还有自定义
年份以及时间的使用实际应用较少
而选择器则使用较为多,但是只是单纯的样式显示,还会有相应界面的转换