Android 按钮未接收OnCLick事件

Android 按钮未接收OnCLick事件,android,android-layout,Android,Android Layout,我发现下面的布局有一个奇怪的问题 <LinearLayout> <LinearLayout android:id="@+id/btn_next" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:gra

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

<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>
但当我点击图像视图时,土司不会显示,但当我使用下面的布局时,它会按预期工作

 <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图像。我已经试过让按钮可点击:真的。另一件我无法理解的事情是,
TextView
为什么能够代替按钮工作。即使按钮扩展了
TextView
。请帮助您的代码显示
mViewDataBinding.btnNext
,但没有为您的按钮分配ID。。。不清楚如何在
mViewDataBinding.btnNext
中获取其引用。也许这就是问题所在

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

下面用示例代码解释这两种方法:

  • onClick
    属性:

    XML:

  • setOnClickListener()
    属性:

    XML:


您的问题不太清楚。首先设置
按钮id
在xml布局的LinearLayout中添加此属性android:clickable=“true”android:focusable=“true”android:focusableInTouchMode=“true”设置按钮id:android:id=“@+id/您的id”btn\u接下来是包含按钮的线性布局的id。我正在使用数据绑定库代替findViewById。您甚至可以尝试使用findViewById的常规方法。它不起作用。下一步是包含按钮的线性布局的id。我正在使用数据绑定库代替findViewById。您甚至可以尝试使用findViewById的常规方法。它不起作用。你是否要再次尝试清理项目和建筑?:P有时会有帮助。是的,很多次。问题是Button视图使用该区域中的onClick事件。按钮似乎定义了一个隐式onClick。
 <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>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onButtonClicked"
    android:text="Test" />
public void onButtonClicked(View view) {
    Toast.makeText(this, "Test", Toast.LENGTH_SHORT).show();
}
<Button
    android:id="@+id/btn_test"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onButtonClicked"
    android:text="Test" />
findViewById(R.id.btn_button).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(MainActivity.this, "Test", Toast.LENGTH_SHORT).show();
    }
});