本人發(fā)帖宗旨:
1.不長(zhǎng)篇大論。
2.發(fā)文前簡(jiǎn)單搜一下是不是有人發(fā)過(guò)(簡(jiǎn)單的)睡蟋。
3.直說(shuō)知識(shí)點(diǎn)影锈,基礎(chǔ)知識(shí)請(qǐng)自行補(bǔ)習(xí)。
4.隨性
前提:使用android.support.v7.widget.GridLayout包豌鹤,兼容性強(qiáng)了不少亡哄。用的Layout Inspector展示,GridLayout子View大小由GridLayout管理布疙,所以想自己控制的朋友請(qǐng)?jiān)贕ridLayout處理完后再設(shè)置大小蚊惯。
熟悉GridLayout的朋友一定發(fā)愁動(dòng)態(tài)添加子View,固定View直接寫一個(gè)布局文件就行了灵临,可以用app:layout_columnWeight="1"和 app:layout_rowWeight="1"實(shí)現(xiàn)平均分布截型,但是動(dòng)態(tài)添加子View就不行了。
(⊙o⊙)儒溉,那是功夫不到家宦焦,我扒了半天代碼,定位到weight和spec有關(guān),聽(tīng)我娓娓道來(lái)波闹。
然后就是怎么設(shè)置spec到GridLayout上有效果
為子View設(shè)置layout布局參數(shù)酝豪,注意是這個(gè)GridLayout.LayoutParams mLayoutParams = new GridLayout.LayoutParams(rowSpec,columnSpec);rowSpec和columnSpec怎么來(lái)的?
mLayoutParams.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1, 1.0f);Spec構(gòu)造器有好多個(gè)精堕,這個(gè)三個(gè)參數(shù)中
第一個(gè)為位置坐標(biāo)(android:layout_row 和 android:layout_column )
第二個(gè)參數(shù)為合并(android:layout_rowSpan和android:layout_columnSpan跨行列顯示)
第三個(gè)參數(shù)為權(quán)重weight孵淘,float類型;
3.往GridLayout里添加設(shè)置了以上布局的View就行了歹篓,結(jié)束瘫证。
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);
}
}
}