0

如何在動態添加ImageViews時在RelativeLayout中保留子項的屬性?android:在RelativeLayout中保留屬性children動態添加ImageViews

我有一個自定義的ImageView我想在運行時添加一個空的RelativeLayout(裏面沒有XML),我可以添加第一個,然後移動,縮放和旋轉它們,它工作正常。 當我添加另一個ImageView時,所有以前添加的實例都會鬆開它們的位置和大小,但是當我觸摸它們時,它們只會返回它們的大小,而不是位置。

在我的ImageView中,我重寫onDraw和onTouch,是否需要重寫其他內容? 也許我必須編寫自己的RelativeLayout實現?我不會!

這是添加新ImageView的僞代碼:

create new instance of ImageView 
set bitmap 
set scaletype 
add imageview to the RelativeLayout container 

我甚至嘗試設置標準佈局參數具有相同的結果全新添加ImageView的。 我試圖根據它的位置獲得每個孩子的邊距,並使用ImgeView.setLayout(l,t,r,b)重新設置佈局; 沒有成功...

這裏是XML RelativeLayout容器,很簡單,可能太多了嗎?

<RelativeLayout 
     android:id="@+id/face_container" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
</RelativeLayout> 

你需要更多的細節來幫助我嗎?請問,我也可以發佈代碼,但我必須先清理它,明天我可以做,同時請給我一些建議。

回答

0

在RelativeLayout中,所有視圖位置都與其他視圖相關。所以,就像你在xml中做的那樣,你應該爲每個視圖提供相關的參數。
添加的ImageView到RelativeLayout的通話setLayoutParams(layoutParams)前:

// Create a new RelativeLayout.LayoutParams instance 
RelativeLayout.LayoutParams layoutParams = 
    new RelativeLayout.LayoutParams(
     RelativeLayout.LayoutParams.WRAP_CONTENT,  
     RelativeLayout.LayoutParams.WRAP_CONTENT); 

// add roules 
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT); 
layoutParams.addRule(......... 
layoutParams.addRule(......... 

//add params to view 
imageView.setLayoutParams(layoutParams); 

//add imageview to the RelativeLayout container 
yourRelativeLayout.addView(imageView); 

here所有規則。

+0

嗨,謝謝你的回覆。但是,如果我想重新分配他們之前的同一職位(因爲增加其中一個重置所有內容)會怎樣。您的解決方案似乎不允許我想實現的目標。或者我錯了? 在這裏你可以罰款更多關於我的問題的細節:http://stackoverflow.com/questions/19745975/adroid-get-dimension-of-children-and-reassign-it-after-adding-another-child-view – datamosh