Related question。答案:RelativeLayout無法做到這一點。無論如何,我正在問怎麼做,而不是只是 RL,或與其他東西。如何將視圖(如在RelativeLayout中)與侄子視圖對齊?
一般故事:您有一個難以調整的複雜佈局,並且隨之而來的是添加內容的請求,與嵌套視圖對齊。
什麼是最佳方法?具有自定義樣式的彈出窗口? (還不熟悉)?花幾天時間將整個層次結構更改爲單個RelativeLayout
?作爲包裝的自定義佈局類?
AbsoluteLayout
(不建議使用)或FrameLayout以編程方式更改LayoutParams
或邊距? (這個我寧願避免,我更喜歡不要觸及Measure等)
簡單示例(與上面的圖無關):
LinearLayout定義元素的相對高度。我不知道用RelativeLayout來做。
anExpandableView
是從someBar
(此處爲全寬度,但可能需要對齊其寬度以及垂直位置)滑動時的動畫。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/topStuff"
layout="@layout/incl_topstuff"
android:layout_width="match_parent"
android:layout_weight="7"
android:layout_height="0dip" />
<include
android:id="@+id/someBar"
layout="@layout/incl_filters_and_stuff"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<include
android:id="@+id/bottomStuff"
layout="@layout/incl_bottomstuff"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="10" />
</LinearLayout>
<include
android:id="@+id/anExpandableView"
layout="@layout/incl_filters"
android:visibility="gone"
android:layout_below="@id/someBar"/>
</RelativeLayout>
我知道,所以有一個討厭的一般性問題,但我不希望有一個臨時的解決方案。我在問如果只有包裝RelativeLayout
允許與不是直接兄弟的視圖對齊,那麼可以解決的情況下要做什麼。
也許你可以提供一個你希望你的視圖看起來像什麼的圖表... – Elye
我知道它,對特定情況的需求。不,我拒絕。我想做'layout_alignBottom'或'layout_below'等等,引用不是兄弟視圖,而是嵌套更深的東西。我使用了'include',因爲它並不關心視圖是什麼,只有'anExpandableView'需要自己定位。如果你理解困難,請指出不清楚的部分。 – kaay
第一句話本身已經非常具有說服力,「你有一個複雜的佈局,並且一直要求添加一些東西,與嵌套視圖對齊。」複雜佈局是什麼意思?一個視圖可以被認爲是嵌套的或者不依賴於它使用的佈局......因此如果沒有適當的上下文,很難理解這個問題。如果「一個」圖表能夠讓我們給出一個剛性的答案,也許你可以提供2個或更多的圖來描述總體思路。 – Elye