自定義ViewGroup實現寬度自動換行

2021-10-20 19:26:56 字數 2466 閱讀 1935

package com.example.day0011;

import android.content.context;

import android.graphics.canvas;

import android.util.attributeset;

import android.util.log;

import android.view.view;

import android.view.viewgroup;

import android.widget.linearlayout;

public

class

shengroup

extends

viewgroup

public

shengroup

(context context, attributeset attrs)

//onmesure() ——計算childview的測量值以及模式,以及設定自己的寬和高。

@override

protected

void

onmeasure

(int widthmeasurespec,

int heightmeasurespec)

int heightmode = measurespec.

getmode

(heightmeasurespec)

;int heightsize = measurespec.

getsize

(heightmeasurespec)

;switch

(heightmode)

setmeasureddimension

(groupwidth,groupheight);}

//通過getchildcount()獲取子view數量,

// getchildat獲取所有子view,

//那個所有view 的寬的資料 相加

//如果小於group的寬 橫排

//如果大於group的寬,豎排

// 分別呼叫layout(int l, int t, int r, int b)確定每個子view的擺放位置。

@override

protected

void

onlayout

(boolean changed,

int l,

int t,

int r,

int b)

else}}

@override

protected

void

ondraw

(canvas canvas)

//實現乙個布局的屬性

@override

public layoutparams generatelayoutparams

(attributeset attrs)

}

<

?xml version=

"1.0" encoding=

"utf-8"

?>

""""

xmlns:tools=

""android:layout_width=

"match_parent"

android:layout_height=

"match_parent"

tools:context=

".main3activity"

>

android:id=

"@+id/group"

android:background=

"#ff0000"

android:layout_width=

"300dp"

android:layout_height=

"match_parent"

>

android:layout_width=

"100dp"

android:text=

"哈哈"

android:background=

"@color/colorprimarydark"

android:layout_height=

"100dp"

>

<

/textview>

android:layout_width=

"100dp"

android:text=

"嘿嘿"

android:background=

"@color/colorprimarydark"

android:layout_height=

"100dp"

>

<

/textview>

<

/com.example.day0011.shengroup>

<

/linearlayout>

自定義ViewGroup(一)

1 概述 viewgroup是乙個view的容器,他可以給出childview的測量模式和測量其寬高,他的作用非常重要。childview測量模式 exactly 表示設定了精確的值,一般當childview設定其寬 高為精確值 match parent時,viewgroup會將其設定為exactl...

ViewGroup 自定義控制項

自定義viewgroup這篇文章是針對自定義layoutmanager來寫的,提取出相關自定義的相同點。所有的自定義都可以歸結為在父控制項裡面放置子控制項。一 繼承類 viewgroup 繼承之後需要實現構造,由於一般是在xml中引入所有需要實現以下構造 viewgroup context cont...

自定義ViewGroup 回顧

自定viewgroup要比自定義view要複雜一點,因為自定義viewgroup不僅測量自身還要測量子元素和及重寫onlayout 來一次排列子view。下面這篇文章是關於自定義viewgroup的一些基本知識,這些主要內容來自 android開發藝術探索 在文章最後又這本書的網上版本。viewgr...