android - OnClickListener 未在 ConstraintLayout 上触发

标签 android kotlin onclicklistener android-constraintlayout

在我的 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"

From Docs

Defines whether this view reacts to click events

并将 keyboard_touch_1.setOnClickListener {...} 移动到 onResume 的末尾,因为 DataBindingUtil.setContentView将重置先前设置的布局 (setContentView),因此您将拥有一个带有新 View 的新布局。

注意:您正在使用数据绑定(bind)以及正常初始化 setContentView(R.layout.activity_game) 技术,因此最佳方法是使用

Event Handling via data binding

关于android - OnClickListener 未在 ConstraintLayout 上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48731670/

相关文章:

android - Play Integrity本地验证

c# - 图像被分配给 ListView 的另一个行项目

android - RxJava,如果我不调用 dispose 会发生什么?

kotlin - Kotlin 中的 Util 类(最佳方法)?

java - 多个 ImageButton OnClicklistener

java - 安卓SDK : findViewById(int) undefined for type

android - 在 Chrome 浏览器上构建一个应用程序,而不是使用普通的 android 浏览器?

Android auto 应用程序未在物理设备中显示(未在 Android Auto 应用程序列表中列出),但在 DHU 中运行良好

java - Android Studio : Where to place onClickListener in Master/Detail Flow, 在按钮单击时启动倒计时器

java - arrayAdapter 中的 AlertDialog 不工作