安卓AlertDialog进阶使用实现日期选择、单选、多选。
2017-05-07 22:31
381 查看
首先看布局的XML文件的代码编写:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_height="match_parent"
tools:context="com.example.czj01.alertdialogtext.MainActivity">
<Button
android:id="@+id/btn_time"
style="@style/btn_style"
android:text="@string/str_time"/>
<Button
android:id="@+id/btn_sex"
style="@style/btn_style"
android:layout_below="@+id/btn_time"
android:text="@string/str_sex"/>
<Button
android:id="@+id/btn_favourite"
style="@style/btn_style"
android:layout_below="@+id/btn_sex"
android:text="@string/str_favourite"/>
<TextView
android:id="@+id/tv_show"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hello World!"
android:layout_below="@+id/btn_favourite"
android:layout_marginTop="10dp"
android:background="#c4c4c4"
/>
</RelativeLayout>
其中,我的按钮都是用了统一的style里面,所以接下来看style里面的xml的编写:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="btn_style">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:background">#84b84e</item>
<item name="android:textSize">20sp</item>
<item name="android:textColor">#fff</item>
<item name="android:layout_marginTop">10dp</item>
</style>
我的对字符串的定义以及字符串组的定义也都写在了string.xml文件里面:
<resources>
<string name="app_name">AlertDialogText</string>
<string name="str_time">设置时间</string>
<string name="str_sex">选择性别</string>
<string name="str_favourite">选择爱好</string>
<!--性别选择-->
<string-array name="chose_sex">
<item>男</item>
<item>女</item>
<item>保密</item>
<item>性别未知</item>
</string-array>
<!--爱好选择-->
<string-array name="chose_favourite">
<item>编程</item>
<item>LOL</item>
<item>旅游</item>
<item>篮球</item>
</string-array>
</resources>然后是最主要activity的编写:
import android.annotation.TargetApi;
import android.app.DatePickerDialog;
import android.content.DialogInterface;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
private Button btnTime,btnSex,btnFavourite;
private ButtonListener buttonListener;
private DatePickerDialog datePickerDialog;
private int
4000
year,month,day;
private Calendar calendar;
private AlertDialog alertDialog;
private TextView tvShow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
setListener();
}
/**
* 初始化控件
*/
public void initView(){
btnTime= (Button) findViewById(R.id.btn_time);
btnFavourite= (Button) findViewById(R.id.btn_favourite);
btnSex= (Button) findViewById(R.id.btn_sex);
tvShow = (TextView) findViewById(R.id.tv_show);
}
/**
* 设置按钮的监听事件
*/
public void setListener(){
buttonListener = new ButtonListener();
btnSex.setOnClickListener(buttonListener);
btnFavourite.setOnClickListener(buttonListener);
btnTime.setOnClickListener(buttonListener);
}
/**
* 创建按钮的监听类
*/
class ButtonListener implements View.OnClickListener{
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_favourite:
showFavouritDialog();
break;
case R.id.btn_sex:
showSexDialog();
break;
case R.id.btn_time:
showTimeDialog();
break;
}
}
}
/**
* 展示性别dialog
*/
public void showSexDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("选择性别");
builder.setIcon(R.mipmap.ic_launcher);
final String[] choseSex=getResources().getStringArray(R.array.chose_sex);
builder.setSingleChoiceItems(R.array.chose_sex, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(),choseSex[which].toString(),Toast.LENGTH_SHORT).show();
alertDialog.dismiss();
}
});
alertDialog=builder.create();
alertDialog.show();
}
/**
* 展示时间dialog
*/
public void showTimeDialog(){
calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month =calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
String text = year + "-" + month + "-" + day;
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
}
},year,month,day);
datePickerDialog.show();
}
/**
* 展示爱好dialog
*/
public void showFavouritDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("选择爱好");
builder.setIcon(R.mipmap.ic_launcher);
final StringBuffer sb = new StringBuffer(100);
final String[] choseFavourite=getResources().getStringArray(R.array.chose_favourite);
builder.setMultiChoiceItems(R.array.chose_favourite, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if(isChecked){
sb.append(choseFavourite[which]);
}
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
tvShow.setText("您的爱好是:"+sb.toString());
}
});
builder.create().show();
}
}这样就实现了日期选择,单选,多选的dialog的编写,很基础。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_height="match_parent"
tools:context="com.example.czj01.alertdialogtext.MainActivity">
<Button
android:id="@+id/btn_time"
style="@style/btn_style"
android:text="@string/str_time"/>
<Button
android:id="@+id/btn_sex"
style="@style/btn_style"
android:layout_below="@+id/btn_time"
android:text="@string/str_sex"/>
<Button
android:id="@+id/btn_favourite"
style="@style/btn_style"
android:layout_below="@+id/btn_sex"
android:text="@string/str_favourite"/>
<TextView
android:id="@+id/tv_show"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hello World!"
android:layout_below="@+id/btn_favourite"
android:layout_marginTop="10dp"
android:background="#c4c4c4"
/>
</RelativeLayout>
其中,我的按钮都是用了统一的style里面,所以接下来看style里面的xml的编写:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="btn_style">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:background">#84b84e</item>
<item name="android:textSize">20sp</item>
<item name="android:textColor">#fff</item>
<item name="android:layout_marginTop">10dp</item>
</style>
我的对字符串的定义以及字符串组的定义也都写在了string.xml文件里面:
<resources>
<string name="app_name">AlertDialogText</string>
<string name="str_time">设置时间</string>
<string name="str_sex">选择性别</string>
<string name="str_favourite">选择爱好</string>
<!--性别选择-->
<string-array name="chose_sex">
<item>男</item>
<item>女</item>
<item>保密</item>
<item>性别未知</item>
</string-array>
<!--爱好选择-->
<string-array name="chose_favourite">
<item>编程</item>
<item>LOL</item>
<item>旅游</item>
<item>篮球</item>
</string-array>
</resources>然后是最主要activity的编写:
import android.annotation.TargetApi;
import android.app.DatePickerDialog;
import android.content.DialogInterface;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
private Button btnTime,btnSex,btnFavourite;
private ButtonListener buttonListener;
private DatePickerDialog datePickerDialog;
private int
4000
year,month,day;
private Calendar calendar;
private AlertDialog alertDialog;
private TextView tvShow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
setListener();
}
/**
* 初始化控件
*/
public void initView(){
btnTime= (Button) findViewById(R.id.btn_time);
btnFavourite= (Button) findViewById(R.id.btn_favourite);
btnSex= (Button) findViewById(R.id.btn_sex);
tvShow = (TextView) findViewById(R.id.tv_show);
}
/**
* 设置按钮的监听事件
*/
public void setListener(){
buttonListener = new ButtonListener();
btnSex.setOnClickListener(buttonListener);
btnFavourite.setOnClickListener(buttonListener);
btnTime.setOnClickListener(buttonListener);
}
/**
* 创建按钮的监听类
*/
class ButtonListener implements View.OnClickListener{
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_favourite:
showFavouritDialog();
break;
case R.id.btn_sex:
showSexDialog();
break;
case R.id.btn_time:
showTimeDialog();
break;
}
}
}
/**
* 展示性别dialog
*/
public void showSexDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("选择性别");
builder.setIcon(R.mipmap.ic_launcher);
final String[] choseSex=getResources().getStringArray(R.array.chose_sex);
builder.setSingleChoiceItems(R.array.chose_sex, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(),choseSex[which].toString(),Toast.LENGTH_SHORT).show();
alertDialog.dismiss();
}
});
alertDialog=builder.create();
alertDialog.show();
}
/**
* 展示时间dialog
*/
public void showTimeDialog(){
calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month =calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
String text = year + "-" + month + "-" + day;
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
}
},year,month,day);
datePickerDialog.show();
}
/**
* 展示爱好dialog
*/
public void showFavouritDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("选择爱好");
builder.setIcon(R.mipmap.ic_launcher);
final StringBuffer sb = new StringBuffer(100);
final String[] choseFavourite=getResources().getStringArray(R.array.chose_favourite);
builder.setMultiChoiceItems(R.array.chose_favourite, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if(isChecked){
sb.append(choseFavourite[which]);
}
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
tvShow.setText("您的爱好是:"+sb.toString());
}
});
builder.create().show();
}
}这样就实现了日期选择,单选,多选的dialog的编写,很基础。
相关文章推荐
- 实现多功能的表格的各行选择变色(点击、单选、多选)
- Android ListView 使用checkbox 实现 单选、多选操作
- Flask学习笔记-使用bootstrap-datepicker实现页面日期选择
- 微信小程序使用picker实现时间和日期选择框功能【附源码下载】
- 使用mydate97实现日期多选
- 使用datepicker插件实现日期选择的基本操作 8-5
- angular js 使用了ng-repeat 实现单选及多选效果
- 使用sui实现的选择控件【性别、日期、省市级联】
- Android使用三方库实现日期选择器
- 使用My97DatePicker实现日期选择并连接数据库
- 代码实现日期选择器UIDatePicker使用
- 代码分析-DataGrid实现自增列、单选、多选 选择自 yangyifan0 的 Blog
- Android使用AlertDialog实现的信息列表单选、多选对话框功能
- 使用javascript实现单选及多选的向右和向左移动
- QCalendar的使用:实现弹出日历选择日期的例子
- Android表单组件,单选,多选,下拉列表,日期选择,时间选择
- 使用datepicker插件实现日期选择的基本操作 8-5
- ListView实现item单选、多选效果(没使用复选框) checkable接口
- iOS 使用UIPickerView三级联动实现选择日期年月日
- 微信小程序例子——使用picker实现时间和日期选择框