通用Dialog

public class IOSRecyclerViewDialog{
private Context context;
private Dialog dialog;
private LinearLayout lLayout_bg;
private TextView txt_title;
private TextView txt_msg;
private Button btn_neg;
private Button btn_pos;
//private ImageView img_line;
private Display display;
private boolean showTitle = false;
private boolean showMsg = false;
private boolean showPosBtn = false;
private boolean showNegBtn = false;
private View view;
private FrameLayout frameLayout; public IOSRecyclerViewDialog(Context context) {
this.context = context;
WindowManager windowManager = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
display = windowManager.getDefaultDisplay();
} public IOSRecyclerViewDialog builder() {
view = LayoutInflater.from(context).inflate(R.layout.dialog_recycler_view, null);
lLayout_bg = (LinearLayout) view.findViewById(R.id.lLayout_bg);
txt_title = (TextView) view.findViewById(R.id.txt_title);
txt_title.setVisibility(View.GONE);
txt_msg = (TextView) view.findViewById(R.id.txt_msg);
txt_msg.setVisibility(View.GONE);
btn_neg = (Button) view.findViewById(R.id.btn_neg);
btn_neg.setVisibility(View.GONE);
btn_pos = (Button) view.findViewById(R.id.btn_pos);
btn_pos.setVisibility(View.GONE); frameLayout = (FrameLayout) view.findViewById(R.id.customPanel); // ????Dialog????????
dialog = new Dialog(context, R.style.AlertDialogStyle);
dialog.setContentView(view);
dialog.setCancelable(false);
// ????dialog????????
lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display
.getWidth() * 0.85), LayoutParams.WRAP_CONTENT)); return this;
} public IOSRecyclerViewDialog setCustomView(View v, LayoutParams params){
if (frameLayout.getChildCount() > )
frameLayout.removeAllViews(); txt_msg.setVisibility(View.GONE);
frameLayout.addView(v, params);
return this;
} public IOSRecyclerViewDialog setTitle(String title) {
showTitle = true;
if ("".equals(title)) {
txt_title.setText("????");
} else {
txt_title.setText(title);
}
return this;
} public IOSRecyclerViewDialog setMsg(String msg) {
frameLayout.setVisibility(View.GONE);
showMsg = true;
if ("".equals(msg)) {
txt_msg.setText("????");
} else {
txt_msg.setText(msg);
}
return this;
} public IOSRecyclerViewDialog setCancelable(boolean cancel) {
dialog.setCancelable(cancel);
return this;
} public IOSRecyclerViewDialog setCanceledOnTouchOutside(boolean cancel) {
dialog.setCanceledOnTouchOutside(cancel);
return this;
} public IOSRecyclerViewDialog 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) {
if (listener != null)
listener.onClick(v);
dialog.dismiss();
}
});
return this;
} public IOSRecyclerViewDialog 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) {
if (listener != null)
listener.onClick(v);
dialog.dismiss();
}
});
return this;
} private void setLayout() {
if (!showTitle && !showMsg) {
txt_title.setText("???");
txt_title.setVisibility(View.VISIBLE);
} if (showTitle) {
txt_title.setVisibility(View.VISIBLE);
} if (!showPosBtn && !showNegBtn) {
btn_pos.setText("???");
btn_pos.setVisibility(View.VISIBLE);
//btn_pos.setBackgroundResource(R.drawable.alertdialog_single_selector);
btn_pos.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
} if (showPosBtn && showNegBtn) {
btn_pos.setVisibility(View.VISIBLE);
//btn_pos.setBackgroundResource(R.drawable.alertdialog_right_selector);
btn_neg.setVisibility(View.VISIBLE);
//btn_neg.setBackgroundResource(R.drawable.alertdialog_left_selector);
//img_line.setVisibility(View.VISIBLE);
} if (showPosBtn && !showNegBtn) {
btn_pos.setVisibility(View.VISIBLE);
//btn_pos.setBackgroundResource(R.drawable.alertdialog_single_selector);
} if (!showPosBtn && showNegBtn) {
btn_neg.setVisibility(View.VISIBLE);
//btn_neg.setBackgroundResource(R.drawable.alertdialog_single_selector);
}
} public void show() {
setLayout();
dialog.show();
}
}

其中用到的资源文件 dialog_recycler_view.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lLayout_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/alert_bg"
android:orientation="vertical" > <TextView
android:id="@+id/txt_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="30px"
android:gravity="center"
android:textColor="@android:color/black"
android:textSize="50px"
android:textStyle="bold" /> <TextView
android:id="@+id/txt_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="15dp"
android:gravity="center"
android:textColor="@android:color/black"
android:textSize="16sp" /> <FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/customPanel"/> <ImageView
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@color/alertdialog_line" /> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="20px"> <!--<Button-->
<!--android:id="@+id/btn_neg"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="43dp"-->
<!--android:layout_weight=""-->
<!--android:background="@drawable/alertdialog_left_selector"-->
<!--android:gravity="center"-->
<!--android:textColor="@color/actionsheet_blue"-->
<!--android:textSize="16sp" />--> <!--<ImageView-->
<!--android:id="@+id/img_line"-->
<!--android:layout_width="0.5dp"-->
<!--android:layout_height="43dp"-->
<!--android:background="@color/alertdialog_line" />--> <!--<Button-->
<!--android:id="@+id/btn_pos"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="43dp"-->
<!--android:layout_weight=""-->
<!--android:background="@drawable/alertdialog_right_selector"-->
<!--android:gravity="center"-->
<!--android:textColor="@color/actionsheet_blue"-->
<!--android:textSize="16sp"-->
<!--/>--> <Button
android:layout_width="wrap_content"
android:layout_height="120px"
android:layout_marginTop="90px"
android:layout_weight=""
android:gravity="center"
android:layout_marginLeft="60px"
android:layout_marginRight="60px"
style="@style/text_white.58"
android:textColor="@color/colorPrimaryDark"
android:background="@drawable/regist_selector_bg"
android:text="@string/logingbutton"
android:id="@+id/btn_neg"
android:layout_below="@+id/forget_password"/>
<Button
android:layout_width="wrap_content"
android:layout_height="120px"
android:layout_marginTop="90px"
android:layout_weight=""
android:gravity="center"
style="@style/text_white.58"
android:layout_alignParentRight="true"
android:layout_marginRight="60px"
android:background="@drawable/btn_circle_seletor"
android:text="注册"
android:id="@+id/btn_pos"
android:layout_below="@+id/forget_password"/>
</LinearLayout> </LinearLayout> <style name="AlertDialogStyle" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowFrame">@null</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
</style>

使用

    RecyclerView recyclerView = new RecyclerView(this);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(true);
recyclerView.setAdapter(homeAdapter);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
homeAdapter.getItemCount() * Utils.getHeightInPx(this)/); new IOSRecyclerViewDialog(this).builder()
.setCancelable(false)
.setCanceledOnTouchOutside(false)
.setCustomView(recyclerView, lp)
.setTitle(selectedBrand.getName())
.setPositiveButton(getString(R.string.add_attention), v ->
presenter.saveData()
).setNegativeButton(getString(R.string.cancle), v -> {
presenter.getSelectedData().clear();
presenter.getSelectedData().addAll(originalAllSelected);
presenter.saveData();
})
.show();

Android 通用Dialog中设置RecyclerView的更多相关文章

  1. Android在代码中设置控件的drawableLeft,drawableRight,drawableTop,drawableBottom。

    根据业务的需要,要在代码中设置控件的drawableLeft,drawableRight,drawableTop,drawableBottom属性. 我们知道在xml中设置的方法为:android:d ...

  2. Android 一个TextView中设置多种不同大小的字体,设置超链接

    以前项目中要是遇到这样的UI设计,都是傻不拉唧的分为三个TextView来实现,今天在微信中无意中看了一篇公众号文章,发现原来只要一个TextView就可以搞定啦,人生最悲哀的事情莫过于工作了这么久啦 ...

  3. Android 在onActivityResult()中设置图片setImageResource(resId) 或者改变view属性,不成功的解决办法

    如果试验过的朋友就会发现,在onActivityResult()中设置这些属性,好像都不工作,虽然我死磕一番还是不知道具体原因,我直接默认它可能就是不能在里面设置,所以就只能在其他地方设置,幸好发现A ...

  4. Android:Dialog中隐藏键盘的注意事项

    场景:弹出一个Dialog.里面有一个EditText.用来输入内容.由于输入时.须要弹出键盘.所以当Dialog消失时.键盘要一起隐藏. 如今我们做一个自己定义的Dialog MyDialog ex ...

  5. android 在代码中设置字体颜色 问题

    项目中需要在代码中控制字体颜色 之前是直接引用资源文件  但是不行 tv.setTextColor(R.color.textColor_black); 无效果   后来在网上找了资料发现 要从reso ...

  6. Android 自定义Dialog中加EditText弹不出键盘跟Dialog遮挡键盘的问题

    先上两张图 第一张问题很明显,第二张是成功的图, 其实第一张是加了 //getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INP ...

  7. 【Android 界面效果47】RecyclerView详解

    RecylerView作为 support-library发布出来,这对开发者来说绝对是个好消息.因为可以在更低的Android版本上使用这个新视图.下面我们看如何获取 RecylerView.首先打 ...

  8. Android studio 安装中遇到一些问题的解决办法,分享一下

    从eclipse转到android studio也是很无耐,刚开始总是会遇到很多难题,但是都不要轻言放弃. 以下是我遇到的问题,并通过搜索引擎找到的解决办法,善用工具,善用头脑,勿为伸手之人. And ...

  9. 浅析Android Dialog中setContentView()方法

    2017-05-15 概述 Dialog在Android中是一个很优秀的工具.在使用Dialog时,我们一般都会自定义要显示的内容布局.Dialog自带了三个方法来支持自定义内容布局. public ...

随机推荐

  1. springboot:基础学习一 linux下后台启动springboot项目

    我们知道启动springboot的项目有三种方式: 运行主方法启动 使用命令 mvn spring-boot:run”在命令行启动该应用 运行“mvn package”进行打包时,会打包成一个可以直接 ...

  2. eas之编码规则&单据转换规则

    *当在企业建模中没有要显示的项目的话,则从包更新到系统树然后选择到规则定义,对申请单新增规则. 企业建模--业务规则-规则定义组织优先  多组织有先  集团优先固定值 显示格式PUR ..系统日期 2 ...

  3. [luogu2414 NOI2011]阿狸的打字机 (AC自动机)

    传送门 Solution 我们知道AC自动机上如果有一点A的fail[A]->B那么B为A的一个后缀 那么我们的问题\((x,y)\)就变为在y中有多少个点直接或间接连向x的终止节点 如果写暴力 ...

  4. open-ldap服务安装(1)

    LDAP简介 LDAP 代表 轻量级目录访问协议.在我的理解中ldap就是一个数据库. 在LDAP中,目录条目以分层树状结构排序. 传统上,这种结构反映了地理和组织边界,表示国家/地区的条目显示在树的 ...

  5. Linux运维工程师学习大纲

    linux运维课程大纲: Linux运维: Linux系统管理: Linux服务及安全管理: httpd,lamp,lnmp cache:memcached,varnish DB:mysql(mari ...

  6. 自定义UEditor右键菜单

    //打开右键菜单功能 ,enableContextMenu: true //右键菜单的内容,label留空支持国际化,否则以此配置为准 //,contextMenu:[ // { // label:' ...

  7. Golang - 异常处理

    目录 Golang - 异常处理 1. 抛异常和处理异常 2. 返回异常 Golang - 异常处理 1. 抛异常和处理异常 package main import "fmt" / ...

  8. JavaSE 学习笔记之Java语法基础(二)

    1,关键字:其实就是某种语言赋予了特殊含义的单词. 保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词. 2,标示符:其实就是在程序中自定义的名词.比如类名,变量名,函数名.包含 0-9. ...

  9. SSH框架下单元测试的实现

    SSH框架下单元测试的实现 实现的功能 实现了部门的增删改查 对Action进行了单元测试 对Service 进行了单元测试,通过mock的方式实现. 实现的步骤 一.对Action层的单元测试实现 ...

  10. codevs——T1220 数字三角形

    http://codevs.cn/problem/1043/  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Descr ...