我在FrameLayout / RelativeLayout中有一个RelativeLayout(对我来说并不重要),它应位于屏幕的底部(如工具栏),并且应该包含一些视图。
它的高度设置为" wrap_content"它的儿童观点也是如此。
此布局的子视图是:左侧是textView,右侧是水平LinearLayout,带有几个按钮。
似乎无论我做什么,textview都会导致RelativeLayout占用整个空间,而不仅仅是它的子节点。
这是导致此问题的最小XML内容。我删除了额外的东西(LinearLayout及其子代,以及一些不重要的属性),因为如果我删除TextView,它们不会导致此问题:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF000000" >
<!-- Here I've put some views that don't have any relation with the views below, so it doesn't have anything with do with the problem -->
<RelativeLayout
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@drawable/vertical_gradient_transparent_to_black" >
<!-- Here I've put a LinearLayout that doesn't cause the problem, so I've removed it for simplicity-->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
</RelativeLayout>
我尝试了很多可能的属性,并尝试添加额外的布局来尝试傻瓜&#34; RelativeLayout,但没有一个成功。
为什么会发生?
一个可行的解决方案是使用Horizontal LinearLayout(TextView的权重)而不是RelativeLayout,但我仍然想知道为什么我不能使用RelativeLayout,以及它为什么会出现。还有如何在使用RelativeLayout时修复它。
答案 0 :(得分:2)
来自RelativeLayout
doc:
课程概述
一种布局,其中儿童的位置可以相互描述或与父母相关。
请注意,您不能在RelativeLayout的大小与其子项的位置之间存在循环依赖关系。 例如,您不能将RelativeLayout的高度设置为WRAP_CONTENT且子级设置为ALIGN_PARENT_BOTTOM
这正是你的情况。 RelativeLayout无法做到这一点。
答案 1 :(得分:0)
之前我遇到过同样的问题,这可能是由android:layout_alignParentBottom
属性引起的。也许你可以找到另一种方法来达到你想要的效果。有关详细信息,请参阅this。
答案 2 :(得分:0)
这是一种奇怪的问题。也许别人有解释。
当我删除行
时,我发现它有效android:layout_alignParentBottom="true"/>
当我尝试这样的时候它也有用
<TextView
android:layout_width="match_parent"
android:layout_alignParentTop="true"
android:layout_height="wrap_content"/>