我的应用程序中有两个视图,我需要使用 OnClick 事件更改“GONE”和“VISIBLE”之间的可见性:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_account);
findViewById(R.id.buttonTerminarSessao).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Test", "Test!");
findViewById(R.id.blackscreen).setVisibility(View.VISIBLE);
findViewById(R.id.boxTerminarSessao).setVisibility(View.VISIBLE);
}
});
}
我得到了日志,但可见性保持不变
我尝试为每个元素创建变量,检查元素是否位于其他元素后面,尝试使用其他按钮的 OnClick 事件,并尝试使用函数来更改可见性。我成功完成这项工作的唯一方法是使用动画从“消失”变为“可见”。这是 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.motion.widget.MotionLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/motion_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutDescription="@xml/activity_account_scene"
tools:context=".AccountActivity">
<androidx.cardview.widget.CardView
android:id="@+id/boxTerminarSessao"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="gone"
app:cardCornerRadius="15dp"
app:cardElevation="32dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="h, 1:1"
app:layout_constraintEnd_toStartOf="@id/vert_2ProfileGuideline"
app:layout_constraintStart_toEndOf="@id/vert_1ProfileGuideline"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/terminarSessaoText"
android:layout_width="0dp"
android:layout_height="0dp"
android:elevation="2dp"
android:gravity="center"
android:text="Terminar Sessão?"
android:textSize="13dp"
app:layout_constraintBottom_toTopOf="@id/boxTerminarSessaoGuideline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/confirmar"
android:layout_width="match_parent"
android:layout_height="0dp"
android:backgroundTint="@color/white"
android:insetTop="0dp"
android:insetBottom="0dp"
android:text="Confirmar"
android:textColor="@color/black"
android:textSize="10dp"
app:elevation="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cancelar" />
<Button
android:id="@+id/cancelar"
android:layout_width="match_parent"
android:layout_height="0dp"
android:backgroundTint="@color/white"
android:insetTop="1dp"
android:insetBottom="1dp"
android:text="Cancelar"
android:textColor="#FF0000"
android:textSize="10dp"
app:elevation="0dp"
app:layout_constraintBottom_toTopOf="@id/confirmar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/boxTerminarSessaoGuideline" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/boxTerminarSessaoGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.5" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<ImageView
android:id="@+id/blackscreen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.3"
android:background="@color/black"
android:elevation="30dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.cardview.widget.CardView
android:id="@+id/cardView2"
android:layout_width="match_parent"
android:layout_height="50dp"
app:cardBackgroundColor="@color/colorPrimaryDark"
app:cardCornerRadius="-1dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="100">
<ImageView
android:id="@+id/especialidadesButton"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical|start"
android:layout_weight="20"
android:clickable="true"
app:srcCompat="@drawable/especialidadesblankdef"
app:tint="@color/white" />
<ImageView
android:id="@+id/marcacoesButton"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_gravity="center"
android:layout_weight="20"
android:clickable="false"
app:srcCompat="@drawable/marca__esdef"
app:tint="@color/white" />
<ImageView
android:id="@+id/mainMenuButton"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical|start"
android:layout_weight="20"
android:clickable="true"
app:srcCompat="@drawable/logodef"
app:tint="@color/white" />
<ImageView
android:id="@+id/localizacaoButton"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical|end"
android:layout_weight="20"
android:clickable="true"
app:srcCompat="@drawable/mapablankdef"
app:tint="@color/white" />
<ImageView
android:id="@+id/utilizadorButton"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical|end"
android:layout_weight="20"
android:clickable="true"
app:srcCompat="@drawable/personalblank_icon"
app:tint="@color/white" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/button1"
android:layout_width="0dp"
android:layout_height="0dp"
app:cardCornerRadius="10dp"
app:layout_constraintDimensionRatio="h, 1:0.15"
app:layout_constraintEnd_toStartOf="@id/vert_2ButtonGuideline"
app:layout_constraintStart_toEndOf="@id/vert_1ButtonGuideline"
app:layout_constraintTop_toBottomOf="@id/horz_1ButtonGuideline">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Perfil"
android:textSize="22dp"
android:textStyle="bold" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="0dp"
app:cardCornerRadius="10dp"
app:layout_constraintDimensionRatio="h, 1:0.15"
app:layout_constraintEnd_toStartOf="@id/vert_2ButtonGuideline"
app:layout_constraintStart_toEndOf="@id/vert_1ButtonGuideline"
app:layout_constraintTop_toBottomOf="@id/horz_2ButtonGuideline">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text=""
android:textSize="22dp"
android:textStyle="bold" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/button3"
android:layout_width="0dp"
android:layout_height="0dp"
app:cardCornerRadius="10dp"
app:layout_constraintDimensionRatio="h, 1:0.15"
app:layout_constraintEnd_toStartOf="@id/vert_2ButtonGuideline"
app:layout_constraintStart_toEndOf="@id/vert_1ButtonGuideline"
app:layout_constraintTop_toBottomOf="@id/horz_3ButtonGuideline">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Definições"
android:textSize="22dp"
android:textStyle="bold" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/button4"
android:layout_width="0dp"
android:layout_height="0dp"
app:cardCornerRadius="10dp"
app:layout_constraintDimensionRatio="h, 1:0.15"
app:layout_constraintEnd_toStartOf="@id/vert_2ButtonGuideline"
app:layout_constraintStart_toEndOf="@id/vert_1ButtonGuideline"
app:layout_constraintTop_toBottomOf="@id/horz_4ButtonGuideline">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Ajuda"
android:textSize="22dp"
android:textStyle="bold" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/buttonTerminarSessao"
android:layout_width="0dp"
android:layout_height="0dp"
app:cardCornerRadius="10dp"
app:layout_constraintDimensionRatio="h, 1:0.15"
app:layout_constraintEnd_toStartOf="@id/vert_2ButtonGuideline"
app:layout_constraintStart_toEndOf="@id/vert_1ButtonGuideline"
app:layout_constraintTop_toBottomOf="@id/horz_5ButtonGuideline">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Terminar Sessão"
android:textSize="22dp"
android:textStyle="bold" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/cardProfilePic"
android:layout_width="0dp"
android:layout_height="0dp"
android:alpha="1"
android:foreground="@drawable/personal_icon_grey"
app:cardCornerRadius="2000dp"
app:cardElevation="10dp"
app:layout_constraintBottom_toTopOf="@id/horz_profileGuideline"
app:layout_constraintDimensionRatio="w, 1:1"
app:layout_constraintLeft_toRightOf="@id/vert_1ProfileGuideline"
app:layout_constraintRight_toLeftOf="@id/vert_2ProfileGuideline">
</androidx.cardview.widget.CardView>
<com.google.android.material.card.MaterialCardView
android:id="@+id/buttons"
style="@style/CustomCardViewStyle"
android:layout_width="match_parent"
android:layout_height="0dp"
app:cardBackgroundColor="@color/colorPrimaryDark"
app:layout_constraintBottom_toTopOf="@id/cardView2"
app:layout_constraintTop_toBottomOf="@id/tabGuideline" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/tabGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.17" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/vert_1ProfileGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.3333" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/vert_2ProfileGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.6666" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/horz_profileGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.27" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/vert_1ButtonGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.08" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/vert_2ButtonGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.91" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/horz_1ButtonGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.35" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/horz_2ButtonGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.47" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/horz_3ButtonGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.59" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/horz_4ButtonGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.71" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/horz_5ButtonGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.83" />
</androidx.constraintlayout.motion.widget.MotionLayout>
将 xml 中
blackscreen
和 boxTerminarSessao
的初始可见性从 gone
更改为 invisible
将解决此问题。