繁体   English   中英

按钮未收到 OnCLick 事件

[英]Button Not Receiving the OnCLick event

我发现以下布局有一个奇怪的问题

<LinearLayout>

    <LinearLayout
        android:id="@+id/btn_next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:gravity="center_vertical"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@drawable/ic_back_right"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="@dimen/btn_height"
            android:background="@null"
            android:text="@string/next"
            android:textColor="@color/colorPrimary"
            android:textSize="15sp"/>

    </LinearLayout>
</LinearLayout>

我添加了如下所示的点击侦听器:

  mViewDataBinding.btnNext.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) { //show toast}
});

但是当我点击图像视图时,吐司没有显示,但是当我使用下面的布局时,它按预期工作

 <LinearLayout>

    <LinearLayout
        android:gravity="bottom|center"
        android:id="@+id/btn_prev"
        android:layout_height="wrap_content"
        android:layout_marginTop="400dp"
        android:layout_width="wrap_content"
        android:orientation="horizontal">

        <ImageView
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:src="@drawable/tab_bankd_selected" />

        <TextView
            android:background="@android:color/holo_green_dark"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            android:layout_width="wrap_content"
            android:padding="10dp"
            android:text="previous"
            android:textAllCaps="true"
            android:textColor="@color/colorPrimary"
            android:textSize="15sp"
            android:textStyle="bold"/>
    </LinearLayout>
</LinearLayout>

当我单击文本视图时,它起作用了。 有人可以告诉我我缺少什么以及我应该怎么做才能使其正常工作。 我使用这种布局的原因是因为我使用的是 SVG 图像。 我已经尝试使按钮 clickable:true 。 我无法理解的另一件事是TextView代替 Button 是如何能够工作的。 即使按钮扩展了TextView 请帮忙

您的代码显示mViewDataBinding.btnNext ,但没有分配给您的按钮的 ID ......不清楚您如何在mViewDataBinding.btnNext中获取其引用。 大概这就是问题所在。

您可以尝试添加一个 ID 并使用findViewById()在您的代码中获取其引用,否则您可以使用android:onClick属性定义一个需要在布局本身中单击按钮时调用的方法。

下面通过示例代码解释了这两种方式:

  • onClick属性:

    XML:

     <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onButtonClicked" android:text="Test" />

    Java(在此布局膨胀的Activity中):

     public void onButtonClicked(View view) { Toast.makeText(this, "Test", Toast.LENGTH_SHORT).show(); }
  • setOnClickListener()属性:

    XML:

     <Button android:id="@+id/btn_test" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onButtonClicked" android:text="Test" />

    Java(可能在此布局膨胀的ActivityonCreate()中):

     findViewById(R.id.btn_button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "Test", Toast.LENGTH_SHORT).show(); } });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM