我在RelativeLayout中遇到了奇怪的ViewStub行为:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ViewStub
android:id="@+id/stub"
android:inflatedId="@+id/stub"
android:layout="@layout/some_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"/>
<TextView
android:id="@+id/text1"
android:layout_width="match_parent"
android:text="Some text"
android:layout_height="wrap_content"/>
<TextView
android:layout_above="@id/stub"
android:layout_width="match_parent"
android:text="Some text2"
android:layout_height="wrap_content"/>
</RelativeLayout>
当在上面展开布局时,它看起来像viewstub与父顶部对齐而不是底部。 我也尝试将ViewStub的高度和宽度设置为固定值(dp或px),但结果相同。那么它是某种Android错误还是我错过了ViewStub的东西?
例如,如果我用简单的视图替换ViewStub,并且相同的RelativeLayout保证所有视图都以适当的方式显示:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:id="@+id/stub"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignParentBottom="true"/>
<TextView
android:id="@+id/text1"
android:layout_width="match_parent"
android:text="Some text"
android:layout_height="wrap_content"/>
<TextView
android:layout_above="@id/stub"
android:layout_width="match_parent"
android:text="Some text2"
android:layout_height="wrap_content"/>
</RelativeLayout>
修改: 我没有在ViewStub上调用inflate。如果在ViewStub上调用inflate方法,那么一切都很完美。
答案 0 :(得分:2)
对不起兄弟,我只是误解了你的意思。
如果看到Offical Document,您可能会看到此消息“ViewStub是一个不可见的零大小视图”。让我们在ViewStub中看到一些源代码:
private void initialize(Context context) {
mContext = context;
setVisibility(GONE);
setWillNotDraw(true);
}
当ViewStub初始化时,它设置为GONE
,这就是android:layout_alignParentBottom="true"
中RelativeLayout
无效的原因。
您可以尝试使用“简单视图”而不是ViewStub
,并将该视图visibility
设置为GONE
。 android:layout_alignParentBottom="true"
也无效。
所以,我不认为这是一个Bug!
修改强> 我找到了一个类似的问题:Issue with RelativeLayout when View visibility is View.GONE
你可以在你的“Some text2”TextView中添加以下代码,一切都解决了!
android:layout_alignWithParentIfMissing="true"