2011-12-15 59 views
0

我做一個構造函數,並以編程方式設置一些視圖並添加一些規則。所以當我打電話constructer我看到默認視圖。如何將保證金設置爲其他課程中的視圖?

現在我想達到一些這個觀點,並改變設置margin.It是基本的我知道,但我dosent爲我工作。

任何人都可以幫忙嗎?我的建築工的

部分:

_photoImgVw = new ImageView(getContext()); 
    _photoImgVw.setImageResource(R.drawable.pic); 
    _photoImgVw.setAdjustViewBounds(true); 
    _photoImgVw.setMaxWidth(100); 
    _photoImgVw.setId(2); 


    lp2=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
     lp2.setMargins(0,0,0,0); 
     addView(_photoImgVw,lp2); 


     LayoutParams lp3=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
     lp3.addRule(RelativeLayout.RIGHT_OF,_photoImgVw.getId()); 
     lp3.setMargins(0,0,0,0); 
     addView(_nameTxt,lp3); 

呼叫在變革的活動:

facebookPersonView.lp2.setMargins(10,300,100,20); 
+0

您能否提供一些細節?這種情況下的外部佈局是什麼?例如。如果它是一個FrameLayout,你必須設置一個正確的引力來使邊距工作。我解釋說,在[這個答案](http://stackoverflow.com/questions/8154716/add-a-margin-to-linearlayout-in-android/8196227#8196227)。 – 2011-12-15 15:58:49

回答

0

確保佈局PARAMS lp2是類RelativeLayout.LayoutParams的一個實例,而不是MarginLayoutParams,或任何它的其他子類名爲LayoutParams(有不少,請參閱top of the documentation

如果params是後者的一個實例,它們將不包含RelativeLayout的任何規則。這意味着父級佈局不知道將視圖放置在哪裏¹,因此無法從邊緣理解。

這是最好的明確聲明,在這樣的方式:

RelativeLayout.LayoutParams lp2 
        = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 
                 LayoutParams.WRAP_CONTENT); 
lp2.setMargins(0,0,0,0); 
addView(_photoImgVw,lp2); 

¹它仍然會使其在左上角可見的,但它是一種不確定的狀態中。

相關問題