按钮未接收OnCLick事件

时间:2017-02-06 06:31:47

标签: 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: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图像。我已经尝试使按钮可点击:true。另一件我未能理解的是,TextView取代Button的能力是怎样的。即使按钮扩展TextView。请帮忙

1 个答案:

答案 0 :(得分:1)

您的代码显示mViewDataBinding.btnNext,但您的按钮没有分配ID ...目前尚不清楚如何在mViewDataBinding.btnNext中获取其引用。可能是问题所在。

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

下面用示例代码说明这两种方式:

  • android:onClick属性:

    XML:

    onClick

    Java(在这个布局膨胀的<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onButtonClicked" android:text="Test" /> 中):

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

    XML:

    setOnClickListener()

    Java(可能在<Button android:id="@+id/btn_test" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onButtonClicked" android:text="Test" /> 的{​​{1}}中,此布局被夸大了:

    onCreate()