Mic*_*sky 3 android android-layout android-constraintlayout
我通过使用新的ConstraintLayout(1.1.2)来平整我的布局,但是当它在一个组中时,我无法再控制ProgressBar的可见性.这是我的布局XML文件的最简单版本,它重现了这个问题:
<android.support.constraint.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<!-- This group prevents me from hiding ProgressBar -->
<android.support.constraint.Group
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="imageLoadingSpinner" />
<ProgressBar
android:id="@+id/imageLoadingSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
我已经介绍了这个小组以控制一些布局,虽然为了简单起见,我已经把这一切都留下了.该错误的本质是引入该组阻止我将ProgressBar的可见性设置为GONE.
以下代码不再隐藏ProgressBar:
find(R.id.imageLoadingSpinner).setVisibility(GONE);
Run Code Online (Sandbox Code Playgroud)
需要说明的是,如果我删除该组,如下所示,我可以将ProgressBar的可见性设置为GONE:
<android.support.constraint.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<!-- Commenting out this group allows me to hide ProgressBar -->
<!--<android.support.constraint.Group-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--app:constraint_referenced_ids="imageLoadingSpinner" />-->
<ProgressBar
android:id="@+id/imageLoadingSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
我找不到有关此问题的任何信息. ProgressBar可见性问题 无关.
虽然如上所述,你不能改变一个Group的孩子的可见性(为此我发现这个小部件不那么有用和有趣),你总是可以设置它的alpha属性.
因此,如果您没有以任何方式使用要隐藏的视图的alpha值,您可以执行以下操作:
find(R.id.imageLoadingSpinner).setAlpha(0);
Run Code Online (Sandbox Code Playgroud)
而且我无法找到一个不这样做的理由,除了可能仍然会渲染视图然后所有渲染的像素将被转换为0-alpha并因此将变得不可见而浪费几个时钟周期的事实,但在大多数情况下,将此视为一个问题会夸大其词.