安卓AlertDialog进阶使用实现日期选择、单选、多选。

来源:互联网 发布:c语言switch语句例子 编辑:程序博客网 时间:2024/06/05 19:04

首先看布局的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 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的编写,很基础。



0 0