未在ConstraintLayout上触发OnClickListener

Val*_*lak 6 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>
Run Code Online (Sandbox Code Playgroud)

看起来不错,但是当我尝试添加OnClickListener时无法正常工作。

keyboard_touch_1.setOnClickListener {
    Toast.makeText(this, "IT WORKS !!!", Toast.LENGTH_SHORT).show()
}
Run Code Online (Sandbox Code Playgroud)

OnClickListener没有被解雇,我也不知道为什么。这可能很简单,但我不明白为什么。

提前致谢。

Pav*_*ngh 5

去掉

android:clickable="false"
Run Code Online (Sandbox Code Playgroud)

从文档

定义此视图是否对点击事件作出反应

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

注意:您将数据绑定与常规初始化setContentView(R.layout.activity_game)技术一起使用,因此最佳方法是使用

通过数据绑定进行事件处理