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