Android--解決EditText放到popupWindow中,原有複製、粘貼、全選、選擇功能失效問題

来源:http://www.cnblogs.com/819158327fan/archive/2016/04/29/5445209.html
-Advertisement-
Play Games

1、原來是將EditView放到了popupwindow,發現EditView原有的複製、粘貼、全選、選擇功能失效了,所以便用DialogFragment代替了popupWindow 直接上代碼 ①、先看佈局文件 ②、看自定義diaglogFragment的代碼 3、如何使用 效果圖 ...


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");

效果圖


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 正在看《第一行代碼》,記錄一下使用 HTTP 協議訪問網路的內容吧! 在Android發送Http請求有兩種方式,HttpURLConnection和HttpClient。 1.使用HttpURLConnection 首先要獲取到HttpURLConnection的實例,只需要new出一個URL對象 ...
  • 一.Activity組件1.簡介:Activity組件是Android四大組件之一,通常一個Activity相當於一個用戶界面,我們可以通過載入佈局文件將Android提供的各種控制項及自定義控制項顯示到用戶界面,併為其註冊監聽,來響應用戶的即時操作。2.Activity生命周期方法:①onCreate ...
  • App Store: 天的故事 一個寫故事、分享故事、閱讀故事的應用。 五彩繽紛的首頁。 故事有開端、中段、結尾,一天有上午、下午、晚上,每一天都是個完整的故事,也是個多彩的故事。 好故事要能一句話概括,天的故事只要330字,配上豐富的色彩來表現感受和心情,天的故事簡潔美觀,有趣易讀。 在這裡,你可 ...
  • 跳到健康設置 上網找了一下 你會發現很難找到。代碼如下 不信你試試 。 NSURL *url = [NSURL URLWithString:@"prefs:root=Privacy&path=HEALTH"]; if ([[UIApplication sharedApplication] canOp ...
  • 今天在查看蘋果介面文檔時,突然對於介面的聲明知識點比較感興趣,再網路找到下麵這個比較不錯的文章,記錄一下並分享; 如你所知,已廢棄(Deprecated)的API指的是那些已經過時的並且在將來某個時間最終會被移除掉的方法或類。通常,蘋果在引入一個更優秀的API後就會把原來的API給廢棄掉。因為,新引 ...
  • 繼續前兩篇,接著本第三篇《學習Coding-iOS開源項目日誌(三)》講解Coding-iOS開源項目。 前 言:作為初級程式員,想要提高自己的水平,其中一個有效的學習方法就是學習別人好的項目。本篇開始會陸續更新本人對github上開源的一個很不 錯的項目的一點點學習積累。也就是,探究著別人寫的源碼 ...
  • ➠更多技術乾貨請戳:聽雲博客 Charles是一款抓包修改工具,相比起TcpDump,charles具有界面簡單直觀,易於上手,數據請求控制容易,修改簡單,抓取數據的開始暫停方便等等優勢!前面介紹瞭如何使用TcpDump抓包,下麵給大家介紹一下Charles的使用。 Charles抓包 Charle ...
  • 作為一種輕量級的數據交換格式,json正在逐步取代xml,成為網路數據的通用格式。 有的json代碼格式比較混亂,可以使用此“http://www.bejson.com/”網站來進行JSON格式化校驗(點擊打開鏈接)。此網站不僅可以檢測Json代碼中的錯誤,而且可以以視圖形式顯示json中的數據內容 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...