通用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. 微信小程序中的iPhone X适配问题

    微信小程序中的iPhone X适配问题 小程序中下方的导航会被iPhone X下面的那条黑线盖住[微笑脸],所以要专门为了iPhone X做样式上的适配[微笑脸] wx.getSystemInfo({ ...

  2. react 基础篇 #2 create-react-app

    1. 介绍 在开发react应用时,应该没有人用传统的方法引入react的源文件(js),然后在html编辑吧. 大家都是用webpack + es6来结合react开发前端应用. 这个时候,我们可以 ...

  3. PAT_A1115#Counting Nodes in a BST

    Source: PAT A1115 Counting Nodes in a BST (30 分) Description: A Binary Search Tree (BST) is recursiv ...

  4. Html-如何正确给table加边框

    一般来说,给表格加边框都会出现不同的问题,以下是给表格加边框后展现比较好的方式 <style> table,table tr th, table tr td { border:1px so ...

  5. Bamboo Django Celery定时任务和时间设置

    1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: 1 #coding:utf-8 2 from celery.task.sche ...

  6. vue自定义指令clickoutside扩展--多个元素的并集作为inside

    都是个人理解,如果发现错误,恳请大家批评指正,谢谢.还有我说的会比较啰嗦,因为是以自身菜鸡水平的视角来记录学习理解的过程,见谅. 1.前言 产品使用vue+element作为前端框架.在功能开发过程中 ...

  7. 用vue2.x注册一个全局的弹窗alert组件、confirm组件

    一.在实际的开发当中,弹窗是少不了的,默认系统的弹窗样式太丑,难以满足项目的实际需求,所以需要自己定义弹窗组件,把弹窗组价定义为全局的,这样减少每次使用的时候引入麻烦,节省开发时间.本文将分享如何定义 ...

  8. firebird的日期型字段

    fb一大特色,日期型字段.dialect3时,对date time datetime是分的很清楚的.它们之间,你必须手把格式设定好,否则会报错.而不是你想象的会自动化:表xxx的date字段yyy,i ...

  9. rsync在windows下的安装和配置

    rsync分为服务器端和客户端,以A(服务器端),B(客户端)2台服务器为例 A的IP地址为192.168.1.111 B的ip地址为192.168.1.1231, 先配置服务器端,在服务器上安装cw ...

  10. mysql-windows修改root密码

    安装mysql完成后 直接进入方式 mysql -u root -p 设置mysql的root密码 mysql -u root -p password 8888