将视图与包含标签一起使用时不可见
Posted
技术标签:
【中文标题】将视图与包含标签一起使用时不可见【英文标题】:View is not visible while using it with include tag 【发布时间】:2020-11-21 10:35:50 【问题描述】:我有一个布局 activity_main.xml
,它使用 include
标签添加了另一个布局 (login_screen.xml
signup_screen.xml
)。使用include
标签添加的布局有一个使用View
声明的视图组件。该视图在它们各自的布局中是可见的(login_screen.xml
signup_screen.xml
),但在添加到activity_main.xml
时,View
变得不可见。我尝试将整个代码复制并粘贴到activity_main.xml
中,当时View
可见。
真正的问题是什么?有人可以帮帮我吗?
activity_main.xml
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_
android:layout_>
<ImageView
android:id="@+id/logo"
android:layout_
android:layout_
app:srcCompat="@drawable/logo"/>
<TextView
android:id="@+id/app_name"
android:layout_
android:layout_
android:text="@string/app_name"/>
<include
layout="@layout/login_screen"
android:id="@+id/login_screen"
android:layout_
android:layout_/>
<include
layout="@layout/signup_screen"
android:id="@+id/signup_screen"
android:layout_
android:layout_/>
<com.google.android.material.button.MaterialButton
android:layout_
android:layout_
android:text="@string/as_guest"/>
</androidx.constraintlayout.widget.ConstraintLayout>
login_screen.xml
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_
android:layout_>
<View
android:layout_
android:layout_/>
<EditText
android:layout_
android:layout_
android:hint="Username" />
<EditText
android:layout_
android:layout_
android:hintt="Password"/>
</androidx.constraintlayout.widget.ConstraintLayout>
signup_screen.xml
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_
android:layout_>
<View
android:layout_
android:layout_/>
<EditText
android:layout_
android:layout_
android:hint="Username" />
<EditText
android:layout_
android:layout_
android:hintt="Password"/>
</androidx.constraintlayout.widget.ConstraintLayout>
编辑:我已经删除了这里的所有约束以使其更易于阅读,在我的代码中,我已经正确设置了约束并且它是完美的。
【问题讨论】:
嗨,Kavin,我也遇到了类似的问题,能否请您更新一下您是如何解决的? 【参考方案1】:如果您在<include />
标签上将android:layout_width
设置为match_parent
是否有效?
您现在实际上要说的是“好的,让宽度与设置的任何约束相匹配”,但没有任何约束要匹配。
注意:对于您当前的 XML,您不妨使用 LinearLayout
并将 android:orientation
设置为 vertical
- 您目前没有指定任何约束。
【讨论】:
感谢您的即时回复。我尝试添加match_parent
仍然看起来一样。但是在编辑layout_width=""
时,我一直这样android:layout_width=""
,此时View
是可见的,但是include
标签中包含的整个布局会跳到屏幕顶部。【参考方案2】:
现在,我不确定是什么问题,但对于您的用例,您可以使用 ViewStub
而不是 include
【讨论】:
【参考方案3】:为<include>
标签的布局设置约束对我有用
<include
android:id="@+id/login_screen"
layout="@layout/login_screen"
android:layout_
android:layout_
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<include
android:id="@+id/signup_screen"
layout="@layout/signup_screen"
android:layout_
android:layout_
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
您是否在活动中的任何地方更改约束?
【讨论】:
我已经正确添加了约束,但为了简单起见,我没有在问题中提到。正如你提到的,即使我将指向另一个视图的约束更改为parent
,但仍然不可见@yugansh以上是关于将视图与包含标签一起使用时不可见的主要内容,如果未能解决你的问题,请参考以下文章