在我的 android 应用程序项目中,我必须在背景上制作一个带有 ProgressBar 的按钮和两个 TextView。
我第一次尝试是这样的:
<android.support.constraint.ConstraintLayout
android:id="@+id/keyboard_touch_1"
android:layout_width="60dp"
android:layout_height="85dp"
android:layout_marginBottom="150dp"
android:layout_marginStart="10dp"
android:focusable="true"
android:clickable="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent">
<ProgressBar
android:id="@+id/keyboard_touch_1_progress_bar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:indeterminate="false"
android:max="100"
android:progress="50"
android:progressDrawable="@drawable/button_progress_bar_default"
android:clickable="false"
android:focusable="false" />
<TextView
android:id="@+id/keyboard_touch_1_score"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
android:text="2"
android:textColor="@color/colorAccent"
android:textSize="11dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="3"
android:clickable="false"
android:focusable="false" />
<TextView
android:id="@+id/keyboard_touch_1_letter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_marginTop="13dp"
android:text="A"
android:textColor="@color/colorAccent"
android:textSize="45dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:clickable="false"
android:focusable="false" />
</android.support.constraint.ConstraintLayout>
看起来不错,但是当我尝试添加 OnClickListener 时,它无法正常工作。
keyboard_touch_1.setOnClickListener {
Toast.makeText(this, "IT WORKS !!!", Toast.LENGTH_SHORT).show()
}
OnClickListener 没有被触发,我不知道为什么。这可能很简单,但我不明白为什么。
提前致谢。
最佳答案
删除
android:clickable="false"
Defines whether this view reacts to click events
并将 keyboard_touch_1.setOnClickListener {...}
移动到 onResume
的末尾,因为
DataBindingUtil.setContentView
将重置先前设置的布局 (setContentView
),因此您将拥有一个带有新 View 的新布局。
注意:您正在使用数据绑定(bind)以及正常初始化 setContentView(R.layout.activity_game)
技术,因此最佳方法是使用
关于android - OnClickListener 未在 ConstraintLayout 上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48731670/