无图无真相,一言不合就上图:
- 功能简介:下拉显示时间列表,点击时间弹出自定义的IOS对话框,然后选择对应的车牌号,跳转到第二个界面。
本以为是个很简单的东西,写了之后才发现坑不断,特此纪念下。(里面用的都是假数据,如需请求网络数据不止如何修改的可以联系我qq:2872960735) 代码有点长,麻烦看官慢慢看,接下来让我们开心的撸码吧!
1、好了,因为这个东西还是比较大的,所以这边就不贴出全部布局,需要的可以去下载我的源码,首先我们先编写IOSDialog.class:
package com.lenz.arouter.recyclerviewtesttwo.dialog;
import android.app.Dialog;
import android.content.Context;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.lenz.arouter.recyclerviewtesttwo.R;
import com.lenz.arouter.recyclerviewtesttwo.adapter.DialogAdapter;
import java.util.ArrayList;
import java.util.List;
/**
* Author: LJW
* Date: 2019-07-18 9:42
* Description: 自定义仿iOS对话框
*/
public class IosDialog {
private Context context;
private Dialog dialog;
private LinearLayout lLayout_bg;
private TextView txt_title;
private TextView btn_neg;
private TextView btn_pos;
private View img_line;
private Display display;
private boolean showTitle = false;
private boolean showPosBtn = false;
private boolean showNegBtn = false;
private RecyclerView mRecyclerView;
public IosDialog(Context context) {
this.context = context;
WindowManager windowManager = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
display = windowManager.getDefaultDisplay();
}
public IosDialog builder() {
View view = LayoutInflater.from(context).inflate(
R.layout.dialog_check_main, null);
lLayout_bg = (LinearLayout) view.findViewById(R.id.lLayout_bg);//整个布局
txt_title = (TextView) view.findViewById(R.id.txt_title);//标题
txt_title.setVisibility(View.GONE);
btn_neg = (TextView) view.findViewById(R.id.btn_neg);//取消按钮
btn_neg.setVisibility(View.GONE);
btn_pos = (TextView) view.findViewById(R.id.btn_pos);//确定按钮
btn_pos.setVisibility(View.GONE);
img_line = (View) view.findViewById(R.id.img_line);
img_line.setVisibility(View.GONE);
mRecyclerView = view.findViewById(R.id.rlv_car_number);
dialog = new Dialog(context, R.style.AlertDialogStyle);
dialog.setContentView(view);
lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display
.getWidth() * 0.80), ViewGroup.LayoutParams.WRAP_CONTENT));
return this;
}
public IosDialog setRecyclerView(List<String> tripsBeans) {
List<String> list = new ArrayList<>();
DialogAdapter checkMainInsideAdapter = new DialogAdapter(tripsBeans, context);
mRecyclerView.setLayoutManager(new GridLayoutManager(context, 2));
mRecyclerView.setAdapter(checkMainInsideAdapter);
return this;
}
public IosDialog setTitle(String title) {
showTitle = true;
if ("".equals(title)) {
txt_title.setText("请选择车牌号");
} else {
txt_title.setText(title);
}
return this;
}
public IosDialog setCancelable(boolean cancel) {
dialog.setCancelable(cancel);
return this;
}
public IosDialog setPositiveButton(String text,
final View.OnClickListener listener) {
showPosBtn = true;
if ("".equals(text)) {
btn_pos.setText("确定");
} else {
btn_pos.setText(text);
}
btn_pos.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onClick(v);
dialog.dismiss();
}
});
return this;
}
public IosDialog setNegativeButton(String text,
final View.OnClickListener listener) {
showNegBtn = true;
if ("".equals(text)) {
btn_neg.setText("取消");
} else {
btn_neg.setText(text);
}
btn_neg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onClick(v);
dialog.dismiss();
}
});
return this;
}
//控制要显示啥
private void setLayout() {
if (showTitle) {
txt_title.setVisibility(View.VISIBLE);
}
if (!showPosBtn && !showNegBtn) {
btn_pos.setText("确定");
btn_pos.setVisibility(View.VISIBLE);
btn_pos.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
}
if (showPosBtn && showNegBtn) {
btn_pos.setVisibility(View.VISIBLE);
btn_neg.setVisibility(View.VISIBLE);
img_line.setVisibility(View.VISIBLE);
}
if (showPosBtn && !showNegBtn) {
btn_pos.setVisibility(View.VISIBLE);