1. 程式人生 > >Android實現銀行卡詳情選擇佈局

Android實現銀行卡詳情選擇佈局

大家好,這兩天正好沒什麼事情做然後有朋友問我一個佈局的問題,效果是這樣的:
Paste_Image.png
然後主要用到的是下面幾點
- addView() 動態往佈局裡面新增控制元件或者佈局
- 當一行滿了之後自動換行到下一行
- 根據服務端返回的json資料進行填充,並且實現單選和雙選

至於上面的多條件篩選和下面的按鈕就沒有做,實現了中間的一部分,本人是個菜鳥,所以浪費的時間比較多,然後發粗來給需要的童鞋參考下。
好了,廢話少說。
看了下佈局,大致分為這麼幾塊:
我是把每一塊作為RecyclerView的一個item來進行實現,然後這個item分為三塊,一個是顯示這一塊的title,一個是顯示是否允許多選,然後下面那一塊是一個線性佈局來準備動態添加布局。

Paste_Image.png
下面先看一下佈局檔案:
Activity的佈局很簡單,就一個RecyclerView:

<android.support.v7.widget.RecyclerView    
     android:id="@+id/recyclerView"    
     android:layout_width="match_parent"    
     android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>

然後看item的佈局,這裡我只貼線性佈局裡面的程式碼:

<LinearLayout    
    android:id="@+id/linearLayout_donw"    
    android:layout_width="wrap_content"    
    android:layout_height="wrap_content"    
    android:layout_marginTop="12dp"    
    android:orientation="horizontal">    
  <com.chogo.recyclerviewdemo.BamAutoLineList        
    android:id="@+id/bal_list"
android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="10dp"> </com.chogo.recyclerviewdemo.BamAutoLineList> </LinearLayout>

這裡BamAutoLineList是自定義的一個自動換行的控制元件
然後動態新增的就簡單了,這裡用Tetxview來進行實現,當然,你也可以使用CheckBox或者其他的控制元件實現,都是可以的。

<TextView    
     android:id="@+id/textview_item"
     android:layout_width="wrap_content"    
     android:layout_height="wrap_content"
     android:layout_marginRight="10dp"   
     android:text="銀行卡"
     android:background="#F3F3F3" 
     android:textColor="#6C6C6C"
     android:layout_marginBottom="12dp" 
   />

好了,佈局很簡單,大家應該都能看懂,就說到這裡了,下面來說一下如何動態新增view。
onBindViewHolder( )方法中進行繫結控制元件,設定控制元件的顯示,先看下程式碼:

if (mDatas.get(position).isMultiple()) {
    holder.mTextMultiple.setText("(多選)");
    for(int i=0;i<length;i++){
        View view=LayoutInflater.from(mContext).inflate(R.layout.item, null);
        final TextView textView=(TextView)view.findViewById(R.id.textview_item);
            textView.setPadding(40,20,40,20);
            textView.setText(mDatas.get(position).getStyle().get(i));
            textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                status=!status;
                if(status){
                    textView.setTextColor(Color.parseColor("#ffffff"));
                    textView.setBackgroundColor(Color.parseColor("#6096EC"));
                }else{
                    textView.setTextColor(Color.parseColor("#6C6C6C"));
                    textView.setBackgroundColor(Color.parseColor("#F3F3F3"));
                } 
           }
        });
        holder.mLineList.addView(view);
    }

在這裡我沒有用固定的資料,是自己造了一串json假資料,然後通過請求api的方式拿到,api地址等下會在下面貼出來。
好了,看程式碼,我是通過for迴圈的方式新增view,然後找到textview的id,之後設定屬性,設定完屬性之後,使用holder.mLineList.addView(view);來新增要顯示的佈局然後寫了一個OnClickListener()監聽,來實現點選改變背景顏色,表示選中狀態和未選中狀態。定義了一個全域性的status變數來標記點選的狀態。
上面這一段程式碼是多選的時候,下面是實現的單選效果,鑑於本人比較渣,然後當時只想到一種方法,所以先用了自己的方法,後來經過交流想起來之前用過的設定selector的方式可以改變。

for(int i=0;i<length;i++){
    View view=LayoutInflater.from(mContext).inflate(R.layout.item, null); 
   final TextView textView= (TextView) view.findViewById(R.id.textview_item);
    textView.setPadding(40,20,40,20);
    textView.setText(mDatas.get(position).getStyle().get(i));
    mList.add(textView);    
    textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            for(int j=0;j<length;j++){
                mList.get(j).setTextColor(Color.parseColor("#6C6C6C"));
                mList.get(j).setBackgroundColor(Color.parseColor("#F3F3F3")); 
           }
            textView.setTextColor(Color.parseColor("#ffffff"));
            textView.setBackgroundColor(Color.parseColor("#6096EC"));
        } 
   });
    holder.mLineList.addView(view);}

解釋一下,在上面定義了一個TextView型別的List集合來存放新增的控制元件,然後當點選一個的時候,將所有的Textview的選中全部取消,也就是設定一個未選中的背景顏色,然後將點選的這個Textview設定一個選中的背景顏色,這樣就實現了單選的效果。
順便提一下,請求網路是使用的Okhttp,然後根據json資料構建一個實體bean,至於Okhttp的使用,感興趣的可以去看官網或者網上資料,都講的很好。
大致內容就這麼多,如果有不懂的可以看詳細程式碼,下面附連結。
好了,以上就是今天所有的分享,如果對你有用的話,可以點個喜歡哦,謝謝(手動比心)

相關推薦

Android實現銀行卡詳情選擇佈局

大家好,這兩天正好沒什麼事情做然後有朋友問我一個佈局的問題,效果是這樣的: 然後主要用到的是下面幾點 - addView() 動態往佈局裡面新增控制元件或者佈局 - 當一行滿了之後自動換行到下一行 - 根據服務端返回的json資料進行填充,並且實現單

Android實現本地圖片選擇及預覽縮放效果仿春雨醫生

在做專案時經常會遇到選擇本地圖片的需求,以前都是懶得寫直接呼叫系統方法來選擇圖片,但是這樣並不能實現多選效果,最近又遇到了,所以還是寫一個demo好了,以後也方便使用。還是首先來看看效果 顯示的圖片使用RecyclerView實現的,利用Glide來載入;下面彈出的圖片資料夾效果是採用

Android實現呼叫攝像頭,選擇本地照片的功能

首先我們看佈局程式碼的檔案: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:

Android 實現FlowLayout流式佈局(類似熱門標籤)

今天跟大家分享一下FlowLayout,最近專案中有遇到熱門標籤這個樣的佈局(文章末尾可下載原始碼),如下圖: 一,建立FlowLayout並繼承ViewGroup FlowLayout 類主要實現onMeasure,onLayout和generateL

Android實現從相簿選擇或者直接拍照來設定圓形的頭像CircleImageView

本人第一次寫技術部落格,只是為了對自己平時遇到的一些問題進行一個總結,可以讓以後能更好的翻看學習,也可以讓更多的人借鑑。 廢話不多說,正題開始: 首先先說明如何進行從相簿選擇或者直接拍照來設定頭像,然後在進行圓形頭像的設定。具體的介面效果如下所示:            

Android實現儲存圖片,長圖、長佈局(webView等)

最近開發遇到一個問題,分享的時候 需要分享一個佈局內容,但是要用圖片分享的格式,最開始思考感覺不可能實現,手機上很少有功能可以實現長圖儲存的, 可是經理說,髮長微博的時候就是自動儲存的長圖片,頓時傻眼了,人家是怎麼做的呢??? 本已經放棄該功能,可這麼一說,又開始在網上找,並沒有很明確的找到

Android ListView不同的item佈局實現

類似與這個 聊天效果 和 進入直播間 注意 在使用不同佈局的時候,在介面卡中 getItemViewType和getViewTypeCount不能少,一般的同一種item的列表是不用這兩個函式的過載的,但是如果需要不同種類的item,就必須過載這兩個

Android實現顏色選擇控制元件

Android實現顏色選擇控制元件 一、實現效果 二、使用方式 三、設計目標 四、程式碼分析 1. 控制元件佈局結構 2. 定義`CircleColorButton` 3. 核心屬性

android實現本地視訊的播放,類似於一個小型的MP4,可以選擇本地的檔案進行播放

首先呢我們來 看一下佈局檔案中的程式碼: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

Android 實現輪播圖效果 底部圓點佈局實現

1、準備底部圓點的素材、利用Drawable的功能,去實現一個圓點圖片的展示 drawable下新建兩個Drawable resource file:dot_normal.xml和dot_select.xml dot_normal.xml <?xml vers

RecyclerView的Item點選事件,增加刪除Item瀑布流動畫效果,長按拖動Item,RecyclerView複雜佈局實現新聞頻道選擇

RecyclerView的Item點選事件的實現,增加和刪除Item使用瀑布流動畫效果,長按拖動Item,RecyclerView複雜佈局的實現使用、RecyclerView去實現今日頭條新聞頻道選擇器。 使用ItemTouchHelper實現Item的拖動交換,由於Recy

Android豎直滑動選擇器WheelView的實現

Android4.0以上的DatePicker,時間選擇器,想必大家不會陌生,如下所示效果 今天我們仿照DatePicker的效果,來實現自定義的WheelView,它可以實現選擇年齡、身高、體重。實現後的效果如下   下面是代碼實現的過程 1、MainActivit

Android 自定義流式佈局(快速實現)

首先先寫一個自定義的類繼承viewgroup,程式碼如下 package com.demo.com.jd_zhang.ui.customview; import android.content.Context; import android.util.AttributeS

Android 實現一個簡易橫向流式佈局

SimpleFlowLayout:一個簡易的橫向流式佈局,只實現核心功能,使用者可自行擴充套件   Demo圖片如下所示: SimpleFlowLayout直接繼承自ViewGroup,主要負責

Android學習之RecyclerView學習(實現瀑布流式佈局

RecyclerView,大家可以通過匯入support-v7對其進行使用。  如果使用AndroidStudio開發, 需要在build.gradle中新增: compile 'com.android.support:appcompat-v7:24.2.1' com

Android實現妙趣橫生的粘連佈局

1概述 在手機QQ中,有一個功能叫“一鍵下班”,無論介面有多少資訊,只要你不想看,就可以手指一滑,將他們全部消滅。據說這個功能專為紅點恐懼症、資訊閱讀強迫症以及處女座暖心打造。這個功能已經上線許久,除了設計本身比較貼心外,其呈現效果也十分驚豔: 這個功能深受廣

android 實現點選輸入框彈出日期選擇對話方塊(DatePickerDialog)

前言 這裡我們實現一個功能,點選日期輸入框(EditText),即可彈出日期選擇對話方塊(DatePickerDialog),等使用者選擇日期後,將使用者選擇的日期顯示在日期輸入框。 1.activity_main.xml 這裡只有一個TextView和EditText。

Android 實現拍照,選擇圖片並剪下儲存

專案中有一個實現圖片的剪下功能和APP“酷站”的點選中間“+”字元,進行圖片選擇到最後剪下功能;“微信”選擇圖片並剪下類似 ,由於測試的模擬器中沒有圖片,所以把參考資料上圖片截下來展示下: 查了一些參考資料,使用的而並不是Android系統的圖片剪下方法,而是UCrop庫

android 實現城市選擇、聯絡人等功能的易拓展 RecyclerView 庫,包含自動索引,粘性等功能

A RecyclerView with indexable, sticky and many other features. 輕鬆實現:選擇城市,選擇聯絡人等需要索引的功能 替代之前的 IndexableStickyListView(移至該分支),進行大幅度重構,效能優化,更易使用的 API,更易拓展的

Android 實現點擊出現選擇框,或者長按顯示選擇介面,PopupMenu的簡單使用。

這篇文章是我學習過程中遇到的一個比較簡單的,但是卻經常用到的知識點,例如ListView Item長按的選擇功能,或者是點選一個按鈕彈出一個小型的功能選擇介面。 其實呢,這個是通過一個PopupMenu來實現,來現在我們先看看程式碼,首先我們需要在 r