簡體   English   中英

Position 根據 LinearLayout 孩子觸摸的位置查看

[英]Position View based on where LinearLayout children touch

我有這樣的布局。 綠色是水平的 LinearLayout,藍色是垂直的 LinearLayout,黑色是 EditTexts(其寬度和高度可以改變)。 紅線表示藍色 LinearLayout 中的 EditText 接觸的位置。

我想要完成的是對齊外部 EditTexts,使紅線始終位於它們的垂直中心。 在圖像上它已經看起來像這樣,因為我將布局的重力設置為中心,但是當藍色布局中的一個 EditTexts 的高度大於另一個時,我的問題就會出現。 它應該看起來像這樣,但實際上它看起來像這樣

我想要實現的目標可以通過 ConstraintLayouts 來完成,方法是將外部 EditText 的頂部約束到頂部內部的底部(內部意味着那些曾經處於藍色布局中的)EditText 和底部到底部內部 EditText 的頂部, 但是還有其他問題

  • 所有的 EditTexts 都將在相同的布局中,這會與代碼混淆很多
  • 您可以將結束/開始限制為僅一個其他視圖,因此內部 EditText 之一將與外部 EditText 重疊(例如,如果外部 EditText 被約束到頂部內部 EditText,則底部內部 EditText 將與外部重疊比頂部寬)演示
  • 每個視圖都是動態創建的,因此使用 LinearLayouts 可以更輕松地定位每個視圖

你會如何處理這個問題?

沒有辦法只使用 XML 進行布局,您必須將外部EditTexts居中到紅線。 ConstraintLayout是通向 go 的方式,但如果不希望這樣做,那么您可以將翻譯應用於外部EditTexts 這個想法是您將測量每個EditText的紅線和頂部 position 的垂直位置。 然后,您將在 Y 方向上應用足夠的平移,以將EditTexts放置在您想要的位置

參見setTranslationY()getY()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM