代码之家  ›  专栏  ›  技术社区  ›  Tamir Abutbul AVK

单击另一个视图时视图将被隐藏

  •  1
  • Tamir Abutbul AVK  · 技术社区  · 5 年前

    我的问题-在我的布局中,当一个按钮被按下时,上面的视图被隐藏了。

    以一个简单的布局为例:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout 
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layoutDirection="ltr"
      android:orientation="vertical">
    
    <Button
        android:id="@+id/button"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/button2"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    
    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/button"
        app:layout_constraintTop_toTopOf="parent" />
    
    <Button
        android:id="@+id/button3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:text="This is view"
        android:textColor="#ffffff"
        android:background="#000000"
        app:layout_constraintBottom_toTopOf="@+id/button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="@+id/button"
        app:layout_constraintTop_toBottomOf="@+id/button" />
    

    此布局将如下所示(黑色视图将位于两个按钮上方):

    enter image description here

    我的问题是,当我单击黑色视图下面的某个按钮时,它将被隐藏:

    enter image description here

    是否有任何方法可以保持按钮动画,但防止按钮单击事件隐藏黑色视图?

    0 回复  |  直到 5 年前
        1
  •  1
  •   Yordan Lyutskanov    5 年前

    问题在于Android用来设置按钮动画的默认动画。在默认情况下单击按钮后,其Z属性(这是按钮的高度)将增加,以允许使用冷阴影效果。您可以在本文中查看更多有关高程和平移的信息:

    Mastering Shadows in Android

    为了解决您的问题,您可以执行以下操作:

    在XML文件中使用 android:stateListAnimator="@null" 在你想留在后台的按钮上。在这个问题上有一个很好的帖子,你也可以查看:

    Android 5.0 android:elevation Works for View, but not Button?

        2
  •  1
  •   Rajnish suryavanshi    5 年前

    这样你就能做到。将按钮转换为文本视图。

    原因可能是由于拉深与波纹效果应用于按钮。

    <android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layoutDirection="ltr"
        android:orientation="vertical">
    
    
    
    <TextView
            android:id="@+id/button"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_margin="5dp"
            android:text="Button"
            android:background="#DDDDDD"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/button2"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    <TextView
            android:id="@+id/button2"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_margin="5dp"
            android:text="Button"
            android:background="#DDDDDD"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toEndOf="@+id/button"
            app:layout_constraintTop_toTopOf="parent" />
    
    <Button
            android:id="@+id/button3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:text="This is view"
            android:textColor="#ffffff"
            android:background="#000000"
            app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="8dp"
            android:layout_marginStart="8dp" app:layout_constraintStart_toStartOf="parent"
            android:layout_marginLeft="8dp" android:layout_marginBottom="8dp"
            app:layout_constraintBottom_toBottomOf="parent" android:layout_marginTop="8dp"
            app:layout_constraintTop_toTopOf="parent"/>
    

    android:background="@android:color/transparent" // to button and button2
    

    android:background="@null"
    

    希望这对你有帮助。