TextView 第一次点击不触发

TextView don't fire first click

我有一个 TextView,它应该像按钮一样被点击。

代码如下:

<TextView
        android:id="@+id/play"
        style="@style/playButton"
        android:layout_width="0dp"
        android:layout_marginBottom="8dp"
        android:layout_marginTop="8dp"
        android:text="@string/homePlay"
        android:focusable="false"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="parent" />

现在当我点击它时,第一次不起作用,但随后的点击工作正常。

这是Java代码:

TextView play = mActivity.findViewById(R.id.play);
play.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              play.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View view) {
                      System.out.println("------------CLICKED");
                  }
              });
          }
        });

“------------CLICKED”仅在第二次单击时显示,而非第一次单击时显示。

提前致谢。

从您的 play.setOnClickListener

中删除嵌套的 setOnClickListener
play.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              System.out.println("------------CLICKED");
          }
        });

如下修改您的代码片段,并检查。

XML(移除焦点设置)

<TextView
        android:id="@+id/play"
        style="@style/playButton"
        android:layout_width="0dp"
        android:layout_marginBottom="8dp"
        android:layout_marginTop="8dp"
        android:text="@string/homePlay"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="parent" />

JAVA 代码(移除了嵌套的 setOnClickListener)

TextView play = mActivity.findViewById(R.id.play);
play.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              System.out.println("------------CLICKED");
          }
        });