自定義ViewGroup的乙個小例子

2021-07-10 16:17:26 字數 2704 閱讀 4288

自定義viewgroup的的講解有很多,沒必要再過多的贅述,網上一搜一大把,下面寫乙個簡單的例子,供自己以後複習的時候可以用到。

<?xml version="1.0" encoding="utf-8"?>

name="cascadelayout">

name="horizontal_spacing"

format="dimension"/>

name="veritcal_spacing"

format="dimension"/>

declare-styleable>

resources>

name="default_horizontal_spacing">15dpdimen>

name="default_vertical_spacing">15dpdimen>

import android.content.context;

import android.content.res.typedarray;

import android.util.attributeset;

import android.view.view;

import android.view.viewgroup;

/** * created by charles on 2016/3/22.

*/public

class

cascadelayout

extends

viewgroup

public

cascadelayout(context context, attributeset attrs)

@override

protected

void

onmeasure(int widthmeasurespec, int heightmeasurespec)

width += getchildat(count - 1).getmeasuredwidth();

height += getchildat(count - 1).getmeasuredheight();

setmeasureddimension(resolvesize(width, widthmeasurespec), resolvesize(height,

heightmeasurespec));

}@override

protected

void

onlayout(boolean changed, int l, int t, int r, int b)

}@override

protected

boolean

checklayoutparams(viewgroup.layoutparams p)

@override

protected viewgroup.layoutparams generatedefaultlayoutparams()

@override

protected viewgroup.layoutparams generatelayoutparams(viewgroup.layoutparams p)

//建立自定義layoutparams用來記錄位置資訊

private

static

class

layoutparams

extends

viewgroup.layoutparams

public

layoutparams(viewgroup.layoutparams source)

public

layoutparams(int width, int height)

}}

<?xml version="1.0" encoding="utf-8"?>

xmlns:android=""

xmlns:ns=""

xmlns:tools=""

android:layout_width="match_parent"

android:layout_height="match_parent"

ns:horizontal_spacing="20dp"

ns:veritcal_spacing="20dp"

android:layout_width="100dp"

android:layout_height="100dp"

android:background="#668b8b"/>

android:layout_width="100dp"

android:layout_height="100dp"

android:background="#00ff00"/>

android:layout_width="100dp"

android:layout_height="100dp"

android:background="#ff6a6a"/>

android:layout_width="100dp"

android:layout_height="100dp"

android:background="#9bcd9b"/>

android:layout_width="100dp"

android:layout_height="100dp"

android:background="#000080"/>

自定義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...