關(guān)于在使用中遇到的MarginLayoutParams的強(qiáng)制轉(zhuǎn)換異常
如果你也跟我一樣遇到了這個(gè)問(wèn)題,而且跟老師的FlowLayout的代碼完全是一樣的,請(qǐng)注意:
在MainActivity中。flowLayout.addView(View);是會(huì)報(bào)出這個(gè)問(wèn)題,好像是如果我們不手動(dòng)指定MarginLayoutParams,系統(tǒng)會(huì)自動(dòng)會(huì)為我們的子View設(shè)置了 ViewGroup.Layoutparams(雖然MarginLayoutParams是他的子類(lèi)),然后報(bào)出了強(qiáng)制轉(zhuǎn)換的異常。
希望我的發(fā)現(xiàn),能解決你的問(wèn)題
2014-12-15
你好,多謝你的分享。
2017-02-18
嘗試了一下,可以這樣解決:“MarinLayoutParams無(wú)法正確生成的問(wèn)題”:
@Override
protected void onCreate(Bundle savedInstanceState) {
? ?super.onCreate(savedInstanceState);
? ?setContentView(R.layout.activity_main);
? ?mFlowLayout = (FlowLayout) findViewById(R.id.id_flowlayout);
? ?initData(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}
public void initData(int width, int height){
? ?for (int i = 0; i < mVals.length; i ++){
? ? ? ?Button button = new Button(this);
? ? ? ViewGroup.MarginLayoutParams layoutParams = new ViewGroup.MarginLayoutParams(width, height);
? ? ? ?button.setText(mVals[i]);
? ? ? // button.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
? ? ? ?//button.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
? ? ? ?mFlowLayout.addView(button,layoutParams);
? ?}
}
*用參數(shù)的方式傳遞;
2016-03-29
怎么解決的?。?/p>
2015-08-12
覆寫(xiě)generateLayoutParams這個(gè)方法即可。
2015-07-04
請(qǐng)問(wèn)這個(gè)問(wèn)題怎么解決?
2015-04-09
如果子view是inflate得來(lái)的,應(yīng)該調(diào)用有3個(gè)參數(shù)那個(gè)方法:inflate(int resource, ViewGroup root, boolean attachToRoot),這樣就可以得到root提供的布局參數(shù)(調(diào)用root的generateDefaultLayoutParams方法)
--------------------------------------------------------------------------------------------------