Android項目實戰(二十七):數據交互(信息編輯)填寫總結

来源:http://www.cnblogs.com/xqxacm/archive/2016/11/16/6070631.html
-Advertisement-
Play Games

前言: 項目中必定用到的數據填寫需求。比如修改用戶名的文字編輯對話框,修改生日的日期選擇對話框等等。現總結一下,方便以後使用。 註: 先寫實現過程,想要學習的同學可以看看,不需要的同學可以直接拉到最下麵複製代碼使用。 一、文字編輯對話框 看下效果圖(仿今日頭條): 包括: 一個標題TextView ...


前言:

  項目中必定用到的數據填寫需求。比如修改用戶名的文字編輯對話框,修改生日的日期選擇對話框等等。現總結一下,方便以後使用。

註:

  先寫實現過程,想要學習的同學可以看看,不需要的同學可以直接拉到最下麵複製代碼使用。

 

一、文字編輯對話框

看下效果圖(仿今日頭條):

包括:

一個標題TextView

一個圓角白色背景EditText

一個可輸入個數提示的TextView

兩個按鈕,‘確定’、‘取消’ 

代碼實現:

(1)編寫佈局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/grey_5"
    android:id="@+id/popup_edit_info_ly"
    >
    <!--標題-->
    <TextView
        android:id="@+id/popup_edit_info_txt_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="title"
        android:gravity="center_horizontal"
        android:padding="@dimen/dp_6"
        android:textColor="@color/black"
        />
    
    <!--編輯框-->
    <EditText
        android:id="@+id/popup_edit_info_edit_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="@dimen/dp_6"
        android:layout_marginRight="@dimen/dp_6"
        android:background="@drawable/bg_popup_edit"
        android:maxLength="10"
        android:padding="@dimen/dp_6"
        >
    </EditText>
    
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="@dimen/dp_6"
        >
        <!--提示文字-->
        <TextView
            android:id="@+id/popup_edit_info_txt_tip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="@dimen/txt_10"
            android:text="剩餘可輸入個數:"
            android:layout_centerVertical="true"
            android:layout_marginLeft="@dimen/dp_6"
            />
        
        <!--確定按鈕,這裡用TextView ,當然也可以用Button ImageButton-->
        <TextView
            android:id="@+id/popup_edit_info_btn_confirm"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/confirm"
            android:background="@drawable/bg_btn_blue"
            android:padding="@dimen/dp_4"
            android:textColor="@color/white"
            android:layout_alignParentRight="true"
            />

        <!--取消按鈕-->
        <TextView
            android:id="@+id/popup_edit_info_btn_cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/cancel"
            android:background="@drawable/bg_btn_grey"
            android:padding="@dimen/dp_4"
            android:textColor="@color/white"
            android:layout_toLeftOf="@id/popup_edit_info_btn_confirm"
            android:layout_marginRight="@dimen/dp_10"
            />
    </RelativeLayout>

</LinearLayout>
dialog_edit_txt

裡面編輯框EditView涉及到了圓角白色背景 需要寫一個drawable文件

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <!--popupwindow 編輯框的背景顏色 用於popup_edit_info.xml佈局文件-->
    <solid android:color="@color/white" ></solid>
    <corners android:radius="@dimen/dp_6"></corners>
    <stroke android:width="0.5dp" android:color="@color/grey_1"></stroke>
</shape>
bg_popup_edit

(2)、在activity或者fragment中使用

  ①、這裡我把對話框寫在一個方法里,方便使用

title 文本對話框的標題
isSingleLine EditText是否限制一行顯示
maxSize EditText中文字的最大長度
textview 修改的TextView控制項,首先要講該控制項的文本顯示在EditText中,點擊確定後需要將編輯文本顯示在改控制項中

private
void showEditDialog(String title , boolean isSingleLine , final int maxSize, final TextView textview)

  ②、根據佈局文件生成view 並 初始化控制項

     View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_txt, null);
        TextView popup_edit_info_txt_title;//標題
        final TextView popup_edit_info_txt_tip;       //編輯框剩餘個數提示
        TextView popup_edit_info_btn_cancel;    //取消按鈕
        TextView popup_edit_info_btn_confirm;    //確定按鈕
        final EditText popup_edit_info_edit_content;   //編輯框
        popup_edit_info_txt_title = (TextView) view.findViewById(R.id.popup_edit_info_txt_title);
        popup_edit_info_txt_tip = (TextView) view.findViewById(R.id.popup_edit_info_txt_tip);
        popup_edit_info_btn_cancel = (TextView) view.findViewById(R.id.popup_edit_info_btn_cancel);
        popup_edit_info_btn_confirm = (TextView) view.findViewById(R.id.popup_edit_info_btn_confirm);
        popup_edit_info_edit_content = (EditText) view.findViewById(R.id.popup_edit_info_edit_content);

  ③、進行控制項的屬性設置

     popup_edit_info_edit_content.setText(textview.getText().toString());            // 將參數textview的文本數據顯示在EditText中
        popup_edit_info_edit_content.setSingleLine(isSingleLine);                       // 設置EditView是否單行,像用戶名這種信息需要單行,像評價簡介這種的不需要單行
        popup_edit_info_edit_content.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxSize)}); // 設置EditText的最大長度,當輸入超過這個值的時候不在允許輸入
        popup_edit_info_txt_tip.setText("剩餘可輸入個數:"+(maxSize-textview.getText().toString().length()));        // 設置 剩餘文字個數提示
final AlertDialog dialog = new AlertDialog.Builder(this) //創建對話框 .setView(view) .create(); popup_edit_info_txt_title.setText(title); // 設置標題
     dialog.setCanceledOnTouchOutside(false);                                         // 設置點擊屏幕Dialog不消失

  ④、進行EditText的設置 ,監聽文字數據字數變化,改變提示文本的內容

      popup_edit_info_edit_content.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }
            @Override
            public void afterTextChanged(Editable s) {
                int length = s.length();
                popup_edit_info_txt_tip.setText("剩餘可輸入個數:"+(maxSize-length));
            }
        });

  ⑤、設置‘確定’、‘取消’點擊事件

popup_edit_info_btn_cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        popup_edit_info_btn_confirm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textview.setText(popup_edit_info_edit_content.getText().toString());
                dialog.dismiss();
            }
        });

  ⑥、顯示對話框

dialog.show();

 

 二、日期選擇對話框(未完待續)

 ......

 ......

 ......

 

 

 

 

---------------------------------------------------------------------------------------------------------------------

完整代碼:

一、文字編輯對話框

佈局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/grey_5"
    android:id="@+id/popup_edit_info_ly"
    >
    <!--標題-->
    <TextView
        android:id="@+id/popup_edit_info_txt_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="title"
        android:gravity="center_horizontal"
        android:padding="@dimen/dp_6"
        android:textColor="@color/black"
        />

    <!--編輯框-->
    <EditText
        android:id="@+id/popup_edit_info_edit_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="@dimen/dp_6"
        android:layout_marginRight="@dimen/dp_6"
        android:background="@drawable/bg_popup_edit"
        android:maxLength="10"
        android:padding="@dimen/dp_6"
        >
    </EditText>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="@dimen/dp_6"
        >
        <!--提示文字-->
        <TextView
            android:id="@+id/popup_edit_info_txt_tip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="@dimen/txt_10"
            android:text="剩餘可輸入個數:"
            android:layout_centerVertical="true"
            android:layout_marginLeft="@dimen/dp_6"
            />

        <!--確定按鈕,這裡用TextView ,當然也可以用Button ImageButton-->
        <TextView
            android:id="@+id/popup_edit_info_btn_confirm"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/confirm"
            android:background="@drawable/bg_btn_blue"
            android:padding="@dimen/dp_4"
            android:textColor="@color/white"
            android:layout_alignParentRight="true"
            />

        <!--取消按鈕-->
        <TextView
            android:id="@+id/popup_edit_info_btn_cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/cancel"
            android:background="@drawable/bg_btn_grey"
            android:padding="@dimen/dp_4"
            android:textColor="@color/white"
            android:layout_toLeftOf="@id/popup_edit_info_btn_confirm"
            android:layout_marginRight="@dimen/dp_10"
            />
    </RelativeLayout>

</LinearLayout>
dialog_edit_txt

drawable文件: 用於設置EditText圓角白色背景

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <!--popupwindow 編輯框的背景顏色 用於popup_edit_info.xml佈局文件-->
    <solid android:color="@color/white" ></solid>
    <corners android:radius="@dimen/dp_6"></corners>
    <stroke android:width="0.5dp" android:color="@color/grey_1"></stroke>
</shape>
bg_popup_edit

java文件:

showEditDialog("請填寫姓名",true,10,edit_info_txt_name);

    private void showEditDialog(String title , boolean isSingleLine , final int maxSize, final TextView textview) {

        View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_txt, null);
        TextView popup_edit_info_txt_title;//標題
        final TextView popup_edit_info_txt_tip;       //編輯框剩餘個數提示
        TextView popup_edit_info_btn_cancel;    //取消按鈕
        TextView popup_edit_info_btn_confirm;    //確定按鈕
        final EditText popup_edit_info_edit_content;   //編輯框
        popup_edit_info_txt_title = (TextView) view.findViewById(R.id.popup_edit_info_txt_title);
        popup_edit_info_txt_tip = (TextView) view.findViewById(R.id.popup_edit_info_txt_tip);
        popup_edit_info_btn_cancel = (TextView) view.findViewById(R.id.popup_edit_info_btn_cancel);
        popup_edit_info_btn_confirm = (TextView) view.findViewById(R.id.popup_edit_info_btn_confirm);
        popup_edit_info_edit_content = (EditText) view.findViewById(R.id.popup_edit_info_edit_content);
        popup_edit_info_edit_content.setText(textview.getText().toString());
        popup_edit_info_edit_content.setSingleLine(isSingleLine);
        popup_edit_info_edit_content.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxSize)});
        popup_edit_info_txt_tip.setText("剩餘可輸入個數:"+(maxSize-textview.getText().toString().length()));
        final AlertDialog dialog = new AlertDialog.Builder(this)
                .setView(view)
                .create();
        popup_edit_info_txt_title.setText(title);

        popup_edit_info_edit_content.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }
            @Override
            public void afterTextChanged(Editable s) {
                int length = s.length();
                popup_edit_info_txt_tip.setText("剩餘可輸入個數:"+(maxSize-length));
            }
        });
        popup_edit_info_btn_cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        popup_edit_info_btn_confirm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textview.setText(popup_edit_info_edit_content.getText().toString());
                dialog.dismiss();
            }
        });
        dialog.setCanceledOnTouchOutside(false);// 設置點擊屏幕Dialog不消失
        dialog.show();

    }
java

效果圖:

 


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

-Advertisement-
Play Games
更多相關文章
  • 先上代碼: 代碼挺簡單的,但是這一點代碼也有可能達不到預期效果。 一開始,在readWrite()函數中,我用的是註釋掉的那些代碼,沒有用紅色部分代碼,結果點擊“讀寫”按鈕後,還是不可編輯。於是就改成了紅色部分代碼,結果再點擊“讀寫”按鈕就可以編輯了。 總結了一下,當達不到預期效果時,可以使用以下幾 ...
  • 關於列表中checkbox選中,全選設置 以上代碼主要處理 1.在列表中如果選中行則選中這行的checkbox,如果再次點擊則取消選中 2.在列表中包含全選checkbox 下麵我自己加入的一段全選和反選的代碼: ...
  • 一、前言: 有時候,我們需要對一些字元串中的字元進行位置變化處理。如 “2016-11-16” 需要調整為 “16/11/2016”。我們知道有很多方法可以使用,比如split()拆分成數組後在進行拼接,也可以使用正則表達式的分組機制來進行處理。下麵我們就將這種方法進行實例對比: 二、split() ...
  • 第一步:到官網下載第三方包,拷貝到自己的項目中 https://github.com/Maxwin-z/XListView-Android 第二步:xml文件 第三步:java代碼 ...
  • 嗨!各位,小編又和大家分享知識啦,在昨天的博客筆記中小編給大家講解瞭如何去配置Android工具以及SDK中的一些配置,那在今天的學習小編會帶給大家哪些Android知識呢?首先我們看一下今天的學習目錄吧。 知識一:瞭解Android項目目錄結構 知識二:Android的配置文件(清單文件) 知識三 ...
  • 這篇博客是關於如何搭建eclipse的android開發環境, 與網上的其他博客不同,我的方法比他們簡單的多,所 以推薦給大家。 搭建eclipse的android開發環境步驟: 1.配置JDK(Java Development Kit,Java開發工具包) (因為android是基於Java語言開 ...
  • 在Android王國中,Service是一個勞動模範,總是默默的在後臺運行,無怨無悔,且總是乾最臟最累的活,比如下載文件,傾聽音樂,網路操作等這些耗時的操作,所以我們請尊重的叫他一聲:"勞模,您辛苦了". 帶著這份好尊重,我又重新研讀了API的文檔,發現老外寫東西還是很靠譜的,人家在文檔中告訴你Se ...
  • 從iOS 8起,就有了App Extension。Extension的種類至今也擴充到了19種,應用也很廣泛,值得重點關註起來。 Extension幾乎可以看做一個內嵌的獨立App,擁有獨立的BundleID、證書、概要配置文件、進程空間、沙盒等等。只是需要打包在App內,類似於寄生在宿主App內, ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...