2016-07-25 62 views
0

根據其父級,確保ImageView按鈕尺寸正確的建議方法是什麼?Android - 如何調整/重新定位ImageView根據父?

我有一個VideoView設置爲「match_parent」(屏幕寬度)和VideoView的60萬像素x 60dp,這是罰款在我測試的屏幕上的ImageView。

問題是,如果我旋轉手機並且VideoView比較小,ImageView就不再成比例並處於正確的位置。大屏幕尺寸(如平板電腦)也存在同樣的問題。

我希望ImageView總是相同的比例大小,並出現在相對於VideoView(其父)相同的位置。

+0

你爲什麼標記C#?這是一個Xamarin相關的問題嗎? –

+0

@VadimCaen我正在使用Xamarin,但問題並不是特定語言。我要求一種通用技術,不一定是特定的代碼。 – user2966445

+0

你看過新的ConstraintLayout嗎?這可能是你需要的(即使有其他解決方案)。如果你能展示你想要達成的目標,那將是非常棒的。 –

回答

0

您應該考慮使用Android的layout_sum:

因爲我不知道你究竟是如何編碼這不,我只能提供基於假設代碼。我假設您想要按比例將父視圖中的VideoView和ImageView對齊。 (假設您需要30%的空間被ImageView佔用,其餘70%的空間被VideoView佔用)。

可以按如下方式編寫XML文件:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:weightSum="10" 
    android:orientation="vertical" 
    android:layout_gravity="center"> 

<VideoView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="3"/> 

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="7"/> 

</LinearLayout> 

這將嵌入VideoView和ImageView的到的LinearLayout(父視圖)。

0

嘗試使用RelativeLayout,wrapContent並避免使用硬編碼大小。

或者爲橫向和縱向視圖定義單獨的佈局,以解決您的問題。

即使使用這個庫我經常用它在我的項目 - SDP

+0

對於這樣一個簡單的問題,最好避免庫的開銷。 –

+0

是的,我知道...只是暗示這樣一個圖書館,可以放寬我們的工作,使佈局兼容不同的屏幕。 –

+0

正如我在對aditya的評論中所說的,ConstraintLayout是一種可以處理這類問題的新佈局。 –

0

我終於實現了這個編程方式使用ViewTreeObserver GlobalLayout監聽你的問題沒有得到解決的嘗試。它工作的很好,我只需要它在屏幕上的一個視圖,所以沒有什麼大不了的。即使電話已旋轉,按鈕也會出現在相對於其父級尺寸的正確位置。

var topPadding = Convert.ToInt32(_videoView.Height * .25); 
    _buttonLayout.SetPadding(_buttonLayout.PaddingLeft, topPadding, _buttonLayout.PaddingRight, _buttonLayout.PaddingBottom); 
相關問題