通用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. Redis好在哪?

    Redis免费入门教程:阿里云大学—开发者课堂 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. Redis ...

  2. VS 2017 统计项目代码总行数

    编辑 → 查找和替换 → 在文件中的查找,打开查找窗口 填入正则表达式  ^b*[^:b#/]+.*$ 查找范围选“整个解决方案”,勾选上“使用正则表达式” 如果要限制文件类型,就填上要查找的文件类型 ...

  3. anaconda安装的TensorFlow版本没有model这个模块

    一.采用git bash来安装,确认已经安装了git 二.手动找到TensorFlow的模块文件夹地址,若不知道,输入以下两行代码: import tensorflow as tf tf.__path ...

  4. Running to the End(Codeforces & AtCoder 百套计划)

    ...Reserved for the future... 仿照xxy dalao的CF&CC百套计划,做了一个Codeforces & AtCoder 百套计划,按这个速度刷下去,每 ...

  5. Git 基础教程 之 远程库更新到本地

    PS:git remote -v 查看远程仓库        git diff temp 比较master 分支与temp的不同 如果分支没有合并到主分支上,用        git branch - ...

  6. (13)处理静态资源(默认资源映射)【从零开始学Spring Boot】

    Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 中的配置各种属性. 建议大家使用Spring Boot的默认配置方式,如果需要特殊处理的再通 ...

  7. cogs 9. 中心台站建设。。。

    9. 中心台站建设 ★★☆   输入文件:zpj.in   输出文件:zpj.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述]     n个城市之间有通讯网络,从这n个城 ...

  8. RabbitMQ发布订阅实战-实现延时重试队列

    RabbitMQ是一款使用Erlang开发的开源消息队列.本文假设读者对RabbitMQ是什么已经有了基本的了解,如果你还不知道它是什么以及可以用来做什么,建议先从官网的 RabbitMQ Tutor ...

  9. JVM基础(二) 实现自己的ClassLoader

    为何要花时间实现自己的ClassLoader 尽管人生的乐趣非常大一部分来自于将时间花在有意思可是无意义的事情上,可是这件事绝对是有意思并且有意义的,有下面几个情景是值得我们花费时间实现自己的clas ...

  10. pl/sql developer 快捷操作: 显示不可见字符 显示历史sql语句 拷贝整个sql窗口的语句至新的sql窗口

    pl/sql developer 快捷操作: 显示不可见字符 显示历史sql语句 拷贝整个sql窗口的语句至新的sql窗口 显示不可见字符:可以把空格.回车显示出来: 显示历史sql语句:ctrl+e ...