1、原来是将EditView放到了popupwindow,发现EditView原有的复制、粘贴、全选、选择功能失效了,所以便用DialogFragment代替了popupWindow

直接上代码

①、先看布局文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:gravity="bottom"
  6. android:orientation="vertical">
  7. <LinearLayout
  8. android:id="@+id/ll_background_dialog"
  9. android:layout_width="match_parent"
  10. android:layout_height="0dp"
  11. android:layout_weight="1"
  12. android:background="#000"
  13. android:alpha="0.7"
  14. android:orientation="horizontal">
  15.  
  16. </LinearLayout>
  17. <ScrollView
  18. android:layout_width="match_parent"
  19. android:layout_height="wrap_content"
  20. android:background="@android:color/white">
  21.  
  22. <LinearLayout
  23. android:layout_width="match_parent"
  24. android:layout_height="wrap_content"
  25. android:background="#ffcdcdcd"
  26. android:orientation="vertical">
  27.  
  28. <RelativeLayout
  29. android:layout_width="match_parent"
  30. android:layout_height="wrap_content">
  31.  
  32. <ImageView
  33. android:id="@+id/iv_quxiao_popup"
  34. android:layout_width="wrap_content"
  35. android:layout_height="wrap_content"
  36. android:padding="16dp"
  37. android:src="@drawable/popup_comment_no" />
  38.  
  39. <TextView
  40. android:layout_width="wrap_content"
  41. android:layout_height="wrap_content"
  42. android:layout_centerInParent="true"
  43. android:text="发言"
  44. android:textColor="#000"
  45. android:textSize="16sp" />
  46.  
  47. <ImageView
  48. android:id="@+id/iv_write_popup"
  49. android:layout_width="wrap_content"
  50. android:layout_height="wrap_content"
  51. android:layout_alignParentEnd="true"
  52. android:layout_alignParentRight="true"
  53. android:padding="16dp"
  54. android:src="@drawable/popup_commnet_ok" />
  55. </RelativeLayout>
  56.  
  57. <EditText
  58. android:id="@+id/et_comment_popup"
  59. android:layout_width="match_parent"
  60. android:layout_height="wrap_content"
  61. android:layout_margin="16dp"
  62. android:background="#ffffff"
  63. android:gravity="top"
  64. android:hint="在这里留言"
  65. android:minLines="3" />
  66.  
  67. <RelativeLayout
  68. android:layout_width="match_parent"
  69. android:layout_height="wrap_content"
  70. android:layout_marginBottom="16dp"
  71. android:layout_marginLeft="16dp"
  72. android:layout_marginRight="16dp">
  73.  
  74. <TextView
  75. android:layout_width="wrap_content"
  76. android:layout_height="wrap_content"
  77. android:layout_alignParentRight="true"
  78. android:text="文明上网"
  79. android:textSize="12sp" />
  80. </RelativeLayout>
  81. </LinearLayout>
  82.  
  83. </ScrollView>
  84.  
  85. </LinearLayout>

②、看自定义diaglogFragment的代码

  1. import android.annotation.SuppressLint;
  2. import android.content.Context;
  3. import android.graphics.Color;
  4. import android.graphics.drawable.ColorDrawable;
  5. import android.os.Bundle;
  6. import android.app.Fragment;
  7. import android.support.v4.app.DialogFragment;
  8. import android.view.LayoutInflater;
  9. import android.view.View;
  10. import android.view.ViewGroup;
  11. import android.view.WindowManager;
  12. import android.view.inputmethod.InputMethodManager;
  13. import android.widget.EditText;
  14. import android.widget.ImageView;
  15. import android.widget.LinearLayout;
  16. import android.widget.Toast;
  17.  
  18. import com.android.volley.AuthFailureError;
  19. import com.android.volley.Request;
  20. import com.android.volley.Response;
  21. import com.android.volley.VolleyError;
  22. import com.android.volley.toolbox.StringRequest;
  23.  
  24. import org.json.JSONException;
  25. import org.json.JSONObject;
  26.  
  27. import java.util.HashMap;
  28. import java.util.Map;
  29.  
  30. import newairtek.com.app.AppApplication;
  31. import newairtek.com.sdnewsandroid.R;
  32. import newairtek.com.url.SdNewsUrl;
  33.  
  34. /**
  35. * A simple {@link Fragment} subclass.
  36. */
  37. @SuppressLint("ValidFragment")
  38. public class CustomDialogFragment extends DialogFragment {
  39.  
  40. private ImageView iv_quxiao_popup;//取消按钮
  41. private ImageView iv_write_popup; //确认按钮
  42. private EditText et_comment_popup;//评论内容
  43. private LinearLayout ll_background_dialog;//容器
  44.  
  45. private boolean isCommenting = false;
  46.  
  47. private String uid;
  48. private String id;
  49. private String cid;
  50.  
  51. public CustomDialogFragment(String uid, String id, String cid) {
  52. this.uid = uid;
  53. this.id = id;
  54. this.cid = cid;
  55. }
  56.  
  57. @Override
  58. public void onCreate(Bundle savedInstanceState) {
  59. super.onCreate(savedInstanceState);
  60. //这句代码的意思是让dialogFragment弹出时沾满全屏
  61. setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Holo_Light_DialogWhenLarge_NoActionBar);
  62. }
  63.  
  64. @Override
  65. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  66. Bundle savedInstanceState) {
  67. View view = inflater.inflate(R.layout.popup_write_comment, null);
  68. //让DialogFragment的背景为透明
  69. getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
  70. initView(view);
  71. initEvent();
  72. return view;
  73. }
  74.  
  75. //初始化view
  76. private void initView(View view) {
  77. iv_quxiao_popup = (ImageView) view.findViewById(R.id.iv_quxiao_popup);
  78. iv_write_popup = (ImageView) view.findViewById(R.id.iv_write_popup);
  79. et_comment_popup = (EditText) view.findViewById(R.id.et_comment_popup);
  80. ll_background_dialog = (LinearLayout) view.findViewById(R.id.ll_background_dialog);
  81. }
  82.  
  83. private void initEvent(){
  84. //取消
  85. iv_quxiao_popup.setOnClickListener(new View.OnClickListener() {
  86. @Override
  87. public void onClick(View view) {
  88. dismiss();
  89. }
  90. });
  91. //确认发送
  92. iv_write_popup.setOnClickListener(new View.OnClickListener() {
  93. @Override
  94. public void onClick(View view) {
  95. if (et_comment_popup.getText().toString().length() > 1) {
  96. if (!isCommenting) {
  97. isCommenting = true;
  98.  
  99. } else {
  100. Toast.makeText(getActivity(), "正在评论,请勿重复操作", Toast.LENGTH_LONG).show();
  101. }
  102. } else {
  103. Toast.makeText(getActivity(), "内容不能为空", Toast.LENGTH_SHORT).show();
  104. }
  105. }
  106. });
  107. ll_background_dialog.setOnClickListener(new View.OnClickListener() {
  108. @Override
  109. public void onClick(View view) {
  110. dismiss();
  111. }
  112. });
  113. }
  114.  
  115. }

3、如何使用

  1. FragmentManager manager = getSupportFragmentManager();//区分是v4的Fragment还是app包里面的
  2. CustomDialogFragment dialogFragment = new CustomDialogFragment(uid, id, cid);
  3. dialogFragment.show(manager, "custom");

效果图

Android--解决EditText放到popupWindow中,原有复制、粘贴、全选、选择功能失效问题的更多相关文章

  1. VC++6.0/MFC 自定义edit 限制输入内容 响应复制粘贴全选剪切的功能

    Ctrl组合键ASCII码 ^Z代表Ctrl+z                     ASCII值 控制字符  ASCII值 控制字符  ASCII值 控制字符  ASCII值 控制字符0(00) ...

  2. 【转】MFC 自定义edit 限制输入十六进制内容 响应复制粘贴全选剪切的功能

    参考地址:MFC 自定义edit 限制输入内容 响应复制粘贴全选剪切的功能   Ctrl组合键ASCII码 ^Z代表Ctrl+z                     ASCII值 控制字符  AS ...

  3. android 长按弹出菜单,复制,粘贴,全选

    <!-- 定义基础布局LinearLayout --> <LinearLayout xmlns:android="http://schemas.android.com/ap ...

  4. js 禁止复制粘贴全选

    // 取消右键菜单document.oncontextmenu = function(e){ var t = e || window.event; var elm = t.target || t.sr ...

  5. Android中的复制粘贴

    Android中的复制粘贴 The Clipboard Framework 当使用clipboard framework时,把数据放在一个剪切对象(clip object)里,然后这个对象会放在系统的 ...

  6. jqueryUI中datepicker的使用,解决与asp.net中的UpdatePanel联合使用时的失效问题

    1.jqueryUI的datepicker的使用 -->首先在jqueryUI官网上根据你的需要下载适合你系统主题的样式,jqueryUI主题下载地址: -->下载后的文件 jquery- ...

  7. 在CMD命令行和PowerShell中实现复制粘贴功能

    在CMD命令行和PowerShell中实现复制粘贴功能         常常使用命令行或者PowerShell的朋友肯定会遇到这样的情况:粘贴文本非常easy,右键--选择粘贴就可以,可是想要复制命令 ...

  8. Oracle SQL Developer 编辑区不能删除,后退,空格,复制粘贴等功能都失效的解决办法

    Oracle SQL Developer 编辑区不能删除,后退,空格,复制粘贴等功能都失效的解决办法 解决: 打开菜单并选择Tools-prefrence-Accelerators-Load Pres ...

  9. ubuntu18.04下取消中键复制粘贴功能

    Q: armlinux开发,主机采用ubuntu18.04操作系统,使用过程中关于鼠标中键有如下操作现象, 操作: 1.选中文本, 2.将鼠标光标定位到要插入的位置 3.按下鼠标中键 现象:将自动复制 ...

随机推荐

  1. python多线程-Semaphore(信号对象)

    Semaphore(value=1) Semaphore对象内部管理一个计数器,该计数器由每个acquire()调用递减,并由每个release()调用递增.计数器永远不会低于零,当acquire() ...

  2. JavaScript -- Opener

    -----028-Window-Opener.html----- <!DOCTYPE html> <html> <head> <meta http-equiv ...

  3. redisTemplate实现轻量级消息队列, 异步处理excel并实现腾讯云cos文件上传下载

    背景 公司项目有个需求, 前端上传excel文件, 后端读取数据.处理数据.返回错误数据, 最简单的方式同步处理, 客户端上传文件后一直阻塞等待响应, 但用户体验无疑很差, 处理数据可能十分耗时, 没 ...

  4. 轻量级web富文本框——wangEditor使用手册(6)——配置“上传图片”功能

    最新版wangEditor: 配置说明:http://www.wangeditor.com/doc.html demo演示:http://www.wangeditor.com/wangEditor/d ...

  5. postgresql进程及内存结

    一.进程和内存架构图 postgresql数据库启动时,先启动一个postmaster的主进程,然后fork出一些辅助子进程. 二.主进程postmaster -bash-4.2$ which pos ...

  6. Spring整合Mybatis原理简单分析

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" ...

  7. TCP连接的TIME_WAIT和CLOSE_WAIT 状态解说

    相信很多运维工程师遇到过这样一个情形: 用户反馈网站访问巨慢, 网络延迟等问题, 然后就迫切地登录服务器,终端输入命令"netstat -anp | grep TIME_WAIT | wc ...

  8. 第六章 对象作用域与servlet事件监听器

          作用域对象 Servlet上下文监听器 Servlet会话监听器 Servlet请求监听器     一:对象作用域 作用域对象 属性操作方法 作用域范围说明 ServletContext( ...

  9. ArcGIS紧凑型切片读取与应用3-紧凑型批量转分散型(附源码)

    1.前言 上篇介绍了webgis动态加载解析紧凑型切片的例子,现在我们使用逆向思维实现紧凑型切片转分散型切片,在实际工作中很有用处,紧凑型切片易于拷贝,但读取只有部署到Arcgis Server才行. ...

  10. vue---数据更新,视图不更新问题

    写点赞功能时,点赞后已经追加到对象里了,但是视图没有更新. 查找了些资料: 数据已经更新了但是视图不更新的问题,有几个原因: 1.根属性不存在,而想要直接给根属性赋值导致的视图不更新.此时初始化属性的 ...