1. 程式人生 > >用程式碼實現GridLayout平均分佈樣式

用程式碼實現GridLayout平均分佈樣式

本人發帖宗旨:
1.不長篇大論。
2.發文前簡單搜一下是不是有人發過(簡單的)。
3.直說知識點,基礎知識請自行補習。
4.隨性

前提:使用android.support.v7.widget.GridLayout包,相容性強了不少。用的Layout Inspector展示,GridLayout子View大小由GridLayout管理,所以想自己控制的朋友請在GridLayout處理完後再設定大小。

Paste_Image.png

熟悉GridLayout的朋友一定發愁動態新增子View,固定View直接寫一個佈局檔案就行了,可以用app:layout_columnWeight=”1”和 app:layout_rowWeight=”1”實現平均分佈,但是動態新增子View就不行了。

(⊙o⊙),那是功夫不到家,我扒了半天程式碼,定位到weight和spec有關,聽我娓娓道來。

  1. 然後就是怎麼設定spec到GridLayout上有效果
    為子View設定layout佈局引數,注意是這個GridLayout.LayoutParams mLayoutParams = new GridLayout.LayoutParams(rowSpec,columnSpec);

  2. rowSpec和columnSpec怎麼來的?
    mLayoutParams.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1, 1.0f);Spec構造器有好多個,這個三個引數中
    第一個為位置座標(android:layout_row 和 android:layout_column )
    第二個引數為合併(android:layout_rowSpan和android:layout_columnSpan跨行列顯示)
    第三個引數為權重weight,float型別;

3.往GridLayout裡新增設定了以上佈局的View就行了,結束。

4.其他
父佈局

  <LinearLayout
        android:id="@+id/root"
        android:layout_width="match_parent"
          android:layout_height="200dp"
          android:orientation="vertical"></LinearLayout>

自定義View(還不知道具體寫啥)

public class ImageLayout extends GridLayout {
  public ImageLayout(Context context, AttributeSet attrs, int defStyle) {
      super(context, attrs, defStyle);
  }


public ImageLayout(Context context) {
    super(context);
    init();
}


private void init() {
    setBackgroundColor(Color.GRAY);
    setColumnCount(5);
    setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

    for (int mI = 0; mI < 10; mI++) {
        ImageView mImageView = new ImageView(getContext());
        GridLayout.LayoutParams mLayoutParams = new GridLayout.LayoutParams();
        mLayoutParams.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1, 1.0f);
        mLayoutParams.rowSpec = GridLayout.spec(GridLayout.UNDEFINED, 1, 1.0f);
        mImageView.setLayoutParams(mLayoutParams);
        mImageView.setScaleType(ImageView.ScaleType.CENTER);
        mImageView.setImageResource(R.drawable.ic_launcher);
        addView(mImageView);
    }
  }
  }

相關推薦

程式碼實現GridLayout平均分佈樣式

本人發帖宗旨: 1.不長篇大論。 2.發文前簡單搜一下是不是有人發過(簡單的)。 3.直說知識點,基礎知識請自行補習。 4.隨性 前提:使用android.support.v7.widget.GridLayout包,相容性強了不少。用的Layout I

https是如何加密的 (知道了原理之後,希望自己能程式碼實現一下,還有用於對個人資訊和公鑰進行加密的雜湊演算法,有時間也去查一下)

由於http協議是明文傳輸資料,資料的安全性沒有保障。為了改進這種明文傳輸協議,https誕生了。   https是在應用層和傳輸層之間,增加了一層ssl加密。對於加密,請往下看:   1、對稱加密   每次在傳送資料之前,伺服器先生成一把金鑰,

Unity 程式碼實現建立資源

用程式碼加圖片資源,建立材質 //圖片物件 Texture2D texture = null; void Start() { //建立材質,並設定預設著色器 Material mat = new Material (Shader.Find("Tran

簡單幾行C語言程式碼實現高斯分佈

由於專案需要產生一個高斯分佈,所以去網上查詢,結果很多,但是都沒有足夠的註釋或者原理講解,所以大部分程式碼都看不懂,也沒法確定程式碼的結果是否正確。因此想從原理上來解決這個問題。具體的理論推導請看 http://blog.sina.com.cn/s/blog_9ce5a1b

java程式碼實現高併發

這裡申請了1000個執行緒,並且執行1000次任務。當所有任務完成後,main退出。 publicclass Test {       publicstaticvoid main(String[] 

VC++教你程式碼實現把拷貝的內容放到剪貼簿。

以下是一個例項,將report控制元件拷貝下來的內容放到剪貼簿,作為文字列拷貝。 /** コピーコマンドの処理関數.  * @param なし.  * @return なし.  * @exception なし.  */ void CGTDTemplatePropDlg::m

程式碼實現輸入i am a student ,輸出 student a am i,不能類庫函式

1.輸入i am a student ,輸出student a am i,不能用類庫函式 public static void main(String[]args){ String s1 = "i am a student"; //獲取到擷取後的字串陣列 String[

ffmpeg程式碼實現自己的muxer

1、概述 本程式碼實現了一個muxer並加入到ffmpeg的AVOutputFormat 連結串列中去,使程式碼能直接呼叫。實現的意義一是瞭解ffmpeg程式碼結構,二是可以自己整自己的視訊格式,讓別人播放不了。 2、程式碼 簡單看下程式碼: /* *本程式主要實現一個自

一個ArrayList物件aList中存有若干個字串元素,現欲遍歷該ArrayList物件,刪除其中所有值為"abc"的字串元素,請程式碼實現

package com.CSDN;import java.util.ArrayList;/* * 一個ArrayList物件aList中存有若干個字串元素, * 現欲遍歷該ArrayList物件,刪除其中所有值為"abc"的字串元素,請用程式碼實現。 * 思路: * 1.定義一個靜態方法,分別傳入引數

程式碼實現以下需求

(1)定義學生類,包含姓名(String name),性別(String gender),年齡(int age)三個屬性,生成空參有參構造,set和get方法,toString方法(2)鍵盤錄入6個學員資訊(錄入格式:張三,男,25),要求有兩個相同的資訊,將6個學員資訊存

程式碼實現註冊Ocx和Dll

在windows系統中,可以通過Regsvr32來實現註冊ocx或者dl, 程式設計時,呼叫Regsvr32來註冊,卻不能正常執行。尤其是在Win7系統中,需要管理員身份才能執行。 使用下面的程式碼則能正常註冊。 //註冊 function RegisterDllServer

怎麼理解程式碼實現資料結構

怎麼能更好的用程式碼實現資料結構內容? 個人理解為:1.首先要掌握資料結構的邏輯,也就是說要知道資料結構是怎麼實現的。這一點達不到的話,後面根本就無從談起。                   &nbs

0004-OpenCV實現影象平移的程式碼(分影象尺寸不變和變兩種情況)

影象平移是啥東西就不用講了吧!需要注意的是影象平移有兩種,第一種是平移後圖像大小不變,這樣會損失影象的部分;第二種是平移後圖像大小變化,這樣原影象不會有損失。 直接上程式碼,大家看效果吧! 程式碼流程如下: 讀取影象→顯示原影象→呼叫自定義的函式translateTransform,作平移後

python3:程式碼演示Socket和Server 實現通訊.

這個是 socket程式設計的流程,socket 的本質是個程式設計介面,它把應用層和傳輸層進行了連線。 連線過程可以分為三個步驟:伺服器監聽,客戶端請求,連線確認。 伺服器監聽 是指 伺服器端socket一直是開放的狀態,隨時等待客戶端發來請求 伺服器端socket一

struts2實現 完整版分頁程式碼

1. userPojo.java原始碼 public class FenyePojo { private Integer numsOfPage;// 每頁顯示多少條資料 private Integer page;// 當前顯示第幾頁 private Integer nums;// 總共多少條資料 p

java8實現6行程式碼搞定遞迴刪除多級非空目錄

在review 程式碼的時候,看到同事寫的程式碼刪除多級非空目錄,寫的很長一串,太複雜,就自己寫了一個,分享給大家: package com.test.java8; import java.io.File; import java.util.Arrays; import java.uti

20行JS程式碼實現貼上板功能

document.execCommand() 此方法就是實現剪貼簿的關鍵,它可以傳入cut,copy,paste三種引數。從最常用的document.execCommand('copy')開始介紹。 在使用之前,我們應該檢查瀏覽器是否支援copy命令:document.queryCommandS

winform實現的類似於WPF中PopUp控制元件的一段程式碼

用winform實現的類似於WPF中PopUp控制元件的一段程式碼 using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using Syste

shell實現一個小指令碼,來同來統計自己某個檔案下的程式碼,總的程式碼行數,總的註釋量,總的空行量?支援遍歷查詢,支援軟連結查詢

[[email protected] yunwei]# cat sum_code_row_version1.4.sh #!/bin/bash # File Name: sum_code_row.sh # Author: Liwqiang # mail: [email

######業務儘可能sql實現(縮短後臺響應時間):最近都在優化之前的程式碼:發現每個模組的index頁都需要優化(很多都在迴圈裡操作資料庫:菜!初級!)

  ###最近都在優化之前的程式碼: 發現每個模組的index頁都需要優化(很多都再迴圈裡操作資料庫:菜!初級!或者說趕專案沒想優化這回事吧) ===》解耦合前提下,能用一條SQL解決的,多測試寫SQL。可以減少很多程式碼。 希望我在疲憊,腦子不好使時候也能堅持吧。(注意休