美文网首页
使用一个Group来控制多个view的展示和隐藏

使用一个Group来控制多个view的展示和隐藏

作者: 职场过客 | 来源:发表于2023-11-22 11:50 被阅读0次

例如布局

<ImageView
        android:id="@+id/overlayBackButton"
        android:layout_width="44dp"
        android:layout_height="44dp"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="16dp"
        android:background="?attr/selectableItemBackgroundBorderless"
        android:clickable="true"
        android:contentDescription="@string/action_close"
        android:focusable="true"
        android:padding="6dp"
        android:scaleType="centerInside"
        app:layout_constraintBottom_toBottomOf="@id/overlayTopBackground"
        app:layout_constraintStart_toStartOf="@id/overlayTopBackground"
        app:layout_constraintTop_toTopOf="@id/overlayTopBackground"
        app:srcCompat="@drawable/ic_back_24dp"
        app:tint="?colorOnPrimary"
        tools:ignore="MissingPrefix" />

  <androidx.constraintlayout.widget.Group
        android:id="@+id/overlayVideoControlsGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"
        app:constraint_referenced_ids="overlayBottomBackground,overlayBackButton,overlayPlayPauseButton,overlaySeekBar"
        tools:visibility="visible" />

    <View
        android:id="@+id/overlayBottomBackground"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:background="@color/black_alpha"
        app:layout_constraintBottom_toBottomOf="parent" />

   <ImageView
        android:id="@+id/overlayPlayPauseButton"
        android:layout_width="44dp"
        android:layout_height="44dp"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="16dp"
        android:background="?attr/selectableItemBackgroundBorderless"
        android:clickable="true"
        android:contentDescription="@string/action_play"
        android:focusable="true"
        android:padding="6dp"
        android:scaleType="centerInside"
        app:layout_constraintBottom_toBottomOf="@id/overlayBottomBackground"
        app:layout_constraintStart_toStartOf="@id/overlayBottomBackground"
        app:layout_constraintTop_toTopOf="@id/overlayBottomBackground"
        app:srcCompat="@drawable/ic_play_arrow"
        app:tint="?colorOnPrimary"
        tools:ignore="MissingPrefix" />

    <SeekBar
        android:id="@+id/overlaySeekBar"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:backgroundTint="?colorOnPrimary"
        android:progressBackgroundTint="?colorOnPrimary"
        android:thumbTint="?colorOnPrimary"
        app:layout_constraintBottom_toBottomOf="@id/overlayBottomBackground"
        app:layout_constraintEnd_toEndOf="@id/overlayBottomBackground"
        app:layout_constraintStart_toEndOf="@id/overlayPlayPauseButton"
        app:layout_constraintTop_toTopOf="@id/overlayBottomBackground" />

可以使用
views?.overlayVideoControlsGroup?.isVisible=true和false来控制四个控件的展示和消失
备注:
1.android:src:
android:src 是 Android 系统提供的原生属性,用于设置 ImageView 的图片资源。
通常情况下,android:src 仅支持 @drawable/ 下的资源或者 @mipmap/ 下的应用图标。
不支持矢量图(Vector Drawable)等一些较新的资源,因为在 API 21 以下的版本中不支持矢量图。

<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_launcher"/>

2.app:srcCompat:
app:srcCompat 是由 AppCompat 库提供的一个扩展属性,用于替代 android:src。
app:srcCompat 不仅支持 @drawable/ 和 @mipmap/ 下的资源,还支持矢量图等一些较新的资源。
在 AppCompat 库的支持下,可以在所有版本的 Android 中使用矢量图等资源。

<ImageView
    android:id="@+id/imageViewCompat"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/ic_vector_image"/>

总体而言,如果你在项目中使用了 AppCompat 库,并且需要支持矢量图等一些较新的资源,建议使用 app:srcCompat。如果仅使用 @drawable/ 或 @mipmap/ 下的资源,使用 android:src 也是可以的。在实际开发中,app:srcCompat 更具有通用性,因为它适用于更广泛的资源类型,并且可以提供更好的兼容性。

相关文章

网友评论

      本文标题:使用一个Group来控制多个view的展示和隐藏

      本文链接:https://www.haomeiwen.com/subject/npniwdtx.html