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