1. 程式人生 > >李代桃僵-列表裡橫豎展示圖片動態調整高寬因複用引起的錯位問題

李代桃僵-列表裡橫豎展示圖片動態調整高寬因複用引起的錯位問題

 <RelativeLayout
            android:id="@+id/rl_pic"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@id/view_top"
            android:layout_below="@id/item_taskstatus_title"
            >
            <FrameLayout
                android:id="@+id/fl_image"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:visibility="gone" />
            <android.support.v7.widget.RecyclerView
                android:id="@+id/rv_pic"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:visibility="gone"
                />
        </RelativeLayout>
 //單圖、多圖顯示

            final ArrayList<String> imageSourceList = new ArrayList<>();
            List<PictureBean> picture = taskStatusBeans.get(groupPosition).getSource_list();
            for (int index = 0; index < picture.size(); index++) {
                PictureBean pictureBean = picture.get(index);
                String url = CommonUtils.changeHeaderUrl(pictureBean.getPicid(), app.getTokenBean().getAccessToken(), "img",
                        String.valueOf((int) (app.getWidthPixels() * 0.36f)),
                        String.valueOf((int) (app.getWidthPixels() * 0.36f)));
                imageSourceList.add(url);
            }

            if (imageSourceList.size() > 1) {
                InfoPicAdapter personAdapter = new InfoPicAdapter(context,imageSourceList,imageLoaderUtil);
                    holder.rv_pic.setLayoutManager(new GridLayoutManager(context,3));
                holder.rv_pic.setAdapter(personAdapter);
                holder.rv_pic.setVisibility(View.VISIBLE);
                holder.fl_image.setVisibility(View.GONE);
            } else if(imageSourceList.size() > 0){
                holder.rv_pic.setVisibility(View.GONE);
                holder.fl_image.setVisibility(View.VISIBLE);
                PictureBean pictureBean = picture.get(0);
                if (TextUtils.isEmpty(pictureBean.getWidth()) || TextUtils.equals(pictureBean.getWidth(), "0") || TextUtils.isEmpty(pictureBean.getHeight()) || TextUtils.equals(pictureBean.getHeight(), "0")) {
                    //設定圖片寬高
                    app.setMLayoutParam(holder.fl_image, 0.36f, 0.36f);
                } else {
                    int mw = Integer.parseInt(pictureBean.getWidth());
                    int mh = Integer.parseInt(pictureBean.getHeight());
                    int maxSize = (int) (app.getWidthPixels() * 0.36f);
                    if (mw > mh) {
                        //計算比例
                        BigDecimal proportion = new BigDecimal(maxSize).divide(new BigDecimal(mw), 3, BigDecimal.ROUND_HALF_UP);
                        //按照比例換算圖片高度
                        float h = new BigDecimal(mh).multiply(proportion).divide(new BigDecimal(app.getWidthPixels()), 3, BigDecimal.ROUND_HALF_UP).floatValue();
                        //設定圖片寬高
                        app.setMLayoutParam(holder.fl_image, 0.36f, h);
                    } else{
                        //計算比例
                        BigDecimal proportion = new BigDecimal(maxSize).divide(new BigDecimal(mh), 3, BigDecimal.ROUND_HALF_UP);
                        //按照比例換算圖片高度
                        float w = new BigDecimal(mw).multiply(proportion).divide(new BigDecimal(app.getWidthPixels()), 3, BigDecimal.ROUND_HALF_UP).floatValue();
                        //設定圖片寬高
                        app.setMLayoutParam(holder.fl_image, w, 0.36f);
                    }
                }
                ImageView iv = new ImageView(getMyActivity());
                iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
                holder.fl_image.addView(iv);
                ImageLoader imageLoader1 = new ImageLoader.Builder()
                        .url(imageSourceList.get(0))
                        .imgView(iv)
                        .placeHolder(R.mipmap.ic_loading)
                        .errorHolder(R.mipmap.ic_load_fail)
                        .scaleType(1)
                        .build();
                imageLoaderUtil.loadImage(context, imageLoader1);
                holder.fl_image.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent(context, ZoomViewPagerActivity.class);
                        intent.putExtra("index", 0);
                        intent.putStringArrayListExtra("imageUrls", imageSourceList);
                        intent.putExtra("max", imageSourceList.size());
                        intent.putExtra("isShow", 1);
                        context.startActivity(intent);
                    }
                });
            }else {
                holder.rv_pic.setVisibility(View.GONE);
                holder.fl_image.setVisibility(View.GONE);
            }
複用佈局,不復用iamgeview,用framelayout代替imageview的位置,動態新增imageview,這樣就不會顯示錯亂了

相關推薦

-列表橫豎展示圖片動態調整引起錯位問題

<RelativeLayout android:id="@+id/rl_pic" android:layout_width="wrap_content" android:layout_heigh

python 學習 D13 叠器 生成器 列表推導式 生成器表達式

true instance ins class 列表推導 叠代器協議 叠代器 方法 叠代 02,叠代器 可叠代對象:    內部含有__iter__ 遵循可叠代協議dir 顯示裏面的所有方法 有 __iter__ 的方法就是 可叠代對象 # print(dir(

【python 列表列表列表的扁平化

目標:列表含有子列表展開成一個列表,列表的扁平化 如: [['智利', '葡萄牙', '德國']] 轉換為 ['智利', '葡萄牙', '德國'] # 程式碼實現 k1=[['智利', '葡萄牙', '德國']] k2 = sum(k1, []) print(k2)

讀書筆記——Python中的迭器和列表解析

Python所謂的迭代協議 有__next__方法的物件會前進到下一個結果,在一系列結果的末尾時,則會引發StopIteration。在Python中,任何這類物件都認為是可迭代的。任何這類物件也能以for迴圈或其他迭代工具遍歷,因為所有迭代工具內部工作起來都是在每次迭代中呼叫__next__,

又一個隱形富二!這個圈最摳的藝人擁有18家公司

阿里巴巴官方釋出微博稱,連續幾日,一篇名為《阿里員工透露:馬總早移走 1200 億人民幣!網友:不愧是老師》的文章被有組織的進行惡意傳播。阿里巴巴官方釋出微博稱,連續幾日,一篇名為《阿里員工透露:馬總早移走 1200 億人民幣!網友:不愧是老師》的文章被有組織的進行惡意傳播。 對此,阿里表示,該文完全捏造事

python列表的字典元素去重

去重 def list_dict_duplicate_removal(): data_list = [{"a": "123", "b": "321"}, {"a": "123", "b": "321"}, {"b": "321", "a": "123"}] run_function

jsp列表某個欄位中文亂碼

網上查的再jsp也第一行加 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 我原本就有 所以無效 斷點看control裡 看

小程式點選迴圈列表的字型變色

這篇部落格是在上一篇部落格的基礎上改進的。上一篇是橫向滑動列表。而點選更改字型則是在此基礎上新增的新功能。直接上程式碼 js檔案: //獲取應用例項 var lists = [] Page({ /** * 頁面的初始資料 */ data: { list: [

列表的字典按年齡從小到大排序

  對列表裡的字典按年齡從小到大排序 infors=[{'name':'laowang','age':10},{'name':'xiaoming','age':30},{'name':'hehe','age':20}] infors.sort(key=lambda x:x['age'])

mysql從服務列表消失了

為了學習mysql,就在自己的PC上安裝了mysql服務,記得第一次成功連線mysql還高興了好一陣子,後來做測試就直接在公司的SIT環境上了,一段時間之後,臨時需要連線一下本地資料庫的,竟然怎麼也連不上,去windows服務列表一看,發現localhost從服務列表裡消失了,啟動不了mysq

python迭器-生成器-列表推導式-生成器表示式-day11-12

生成器Generator    生成器函式一個包含yield關鍵字的函式就是一個生成器函式。yield可以為我們從函式中返回值,但是yield又不同於return,return的執行意味著程式的結束,呼叫生成器函式不會得到返回的具體的值,而是得到一個可迭代的物件。每一次獲取這個可

解決方法:①MySQL 閃退 ②服務列表找不到MySQL ③MySQL服務無法啟動

安裝MySQL之後輸密碼之後閃退:有三種情況 **1.**最簡單的, MySQL如果你輸錯了密碼他就會閃退的。   **2.**如果你剛安裝MySQL,並且下載安裝過程中,他沒有提示你填寫使用者名稱和密碼,那你就是預設使用者名稱root,預設密碼是沒密碼,進去之

列表的 imge 設定滑鼠經過事件

<ul> <li><img src="1.jpg" onmouseover="changeColor(this)"></li> <li><img src="2.jpg" onmouseover="changeC

python 可迭序列(列表,元組,字串),實現鄰近去重,順序不變

碼字不易,轉載請標明出處… 鄰近去重程式碼實現如下: def special_func_order(seq): list_ = [] # 定義一個空列表,用來儲存判斷後的資料 for i in range(len(seq) - 1): # 假如 le

vs2017開發安卓應用時使用逍遙安卓之類的模擬器除錯,vs除錯列表沒有模擬器的解決辦法

開啟vs的adb命令列,如果使用的逍遙安卓,執行如下命令(如果是其他模擬器把相應埠換掉就行了,如果adb devices提示模擬器離線,重啟下模擬器再重新connect即可):adb connect 1

Qt自定義Combobox實現列表上拉展示

廢話 由於最近專案需要,想用一個能夠上拉的Combobox,但是試了各種方法發現QCombobox並不能達到我需要的效果,所以決定自己寫一個。 方法 其實很簡單,combobox可認為是按鈕和一個列表組成,按鈕由QPushButton來實現,列表由QLi

Python整理(迭目錄和列表應用)

buildList = []#定義一個空列表用於存放目錄中需要的檔名 for dirPath, dirNames, fileNames in os.walk(gPathSrc + "/../BUILD_RECORD"): #迭代目錄 fo

python:迭器和列表解析

建立迭代器: 對一個物件呼叫 iter() 就可以得到它的迭代器. 它的語法如下: iter(obj) iter(func, sentinel ) 如果你傳遞一個引數給 iter() , 它會檢查你傳遞的是不是一個序列, 如果是, 那麼很簡單:根據索引從 0 一直迭代到序

小程式分頁,滾動條滾到底部時往列表新增資料

最近做小程式分頁,可以有兩種處理方式,一種是滾動到底部顯示下一頁,另一種是滾動到底部,往列表里加一頁資料,我用的是第二種,效果比第一種好多了 wxml:列表底部新增文字提示: <view wx:if="{{goodsList.length > 0}}" cla

foreach迭顯示在form,input輸入框的name相同的解決方法

<?phpif(isset($_POST['submit'])){$users = $_POST['user'];$nums = $_POST['num'];foreach($users as $key=>$val){echo 'user ',$key,' =