您的位置:首页 > 移动开发 > Android开发

安卓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的编写,很基础。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息