zoukankan      html  css  js  c++  java
  • Android--解决EditText放到popupWindow中,原有复制、粘贴、全选、选择功能失效问题

    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     
    116 
    117    
    118 
    119 }

    3、如何使用

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

    效果图

  • 相关阅读:
    Virtual Box的一些东西
    sun 的Virtual box
    Powerdesigner的vbscript
    MemoryStream的一些问题
    vs2008 三大形象代言人
    ASP.NET学习之匿名方法
    asp.net2.0学习历程 菜鸟到中级程序员的飞跃
    ASP.NET程序员必看书
    设计模式学习扎马步
    MDI窗体改变背景
  • 原文地址:https://www.cnblogs.com/819158327fan/p/5445209.html
Copyright © 2011-2022 走看看