【发布时间】:2018-04-30 15:31:26
【问题描述】:
我想避免嵌套布局,以提高我的应用性能。
因此,我尝试了以下方法
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_margin="30dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/title_text_view"
android:background="#ffd600"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Title\nTitle"
app:layout_constraintEnd_toStartOf="@+id/pin_text_view"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/pin_text_view"
android:background="#ff0000"
android:textColor="#ffffff"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="Pin" />
<TextView
android:id="@+id/body_text_view"
android:background="#304ffe"
android:textColor="#ffffff"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@+id/title_text_view"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:text="Body" />
</android.support.constraint.ConstraintLayout>
输出如下。
在运行时,我可能会将title_text_view(黄色)的可见性更改为View.GONE。
但是,它看起来像下面这样。我不希望pin_text_view(红色)被body_text_view(蓝色)掩盖
我希望拥有的是
克服的方法之一是将title_text_view(黄色)的可见性更改为View.GONE后,我需要使用Java代码手动更新app:layout_constraintTop_toBottomOf的body_text_view(蓝色)-Android : How to programatically set layout_constraintRight_toRightOf "parent"
来自
<TextView
android:id="@+id/body_text_view"
...
app:layout_constraintTop_toBottomOf="@+id/title_text_view"
到
<TextView
android:id="@+id/body_text_view"
...
app:layout_constraintTop_toBottomOf="@+id/pin_text_view"
但是,这会使我的代码更难维护。
有没有更简单的方法,不涉及Java代码,不嵌套布局?
【问题讨论】:
-
你想让视图不可见还是消失?
-
保持视图消失。
-
好的,可以做到,但问题是你必须保持 pin 视图底部与黄色文本视图对齐,这是因为如果你将可见性设置为消失,并且在再次设置可见后它将与你的黄色布局混合.
标签: android android-constraintlayout