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

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



猜你喜欢

转载自blog.csdn.net/qq_29426541/article/details/71375043