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