view.performClick()触发点击事件

1、主要作用

自动触发控件的点击事件

2、界面的布局文件  activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/bt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点击一下" />

    <Button
        android:id="@+id/bt2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/bt"
        android:text="@string/hello_world" />

</RelativeLayout>

3、MainActivity 代码

package com.android;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

    Button button1 ;
    Button button2 ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main );

        button1 = (Button) findViewById( R.id.bt ) ;
        button1.setOnClickListener( new OnClickListener() {
            @Override
            public void onClick(View v) {
                button2.performClick();  //调用 button2的点击事件
            }
        });

        button2 = (Button) findViewById( R.id.bt2 ) ;
        button2.setOnClickListener( new OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText( MainActivity.this , "点击了", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

4、注意事项

如果同时使用了view.setOnTouchListener()方法,则有可能存在拦截view.performClick()的响应事件,

因为当view.OnTouchEvent()在event.getAction() == MotionEvent.ACTION_DOWN时返回false,

系统会认为view不需要处理Touch事件,则后续的Touch事件(move、up、click)就不会被传进来 。

所以也不会触发view.performClick(),而view.setOnTouchListener()相当于是重写了view.OnTouchEvent(),

所以在写view的TouchListener处理时,需要留意view是否存在点击事件监听,如果有,则在适当的位置使用view.performClick()触发点击事件。

时间: 2024-12-28 16:32:03

view.performClick()触发点击事件的相关文章

解决jQuery ajax动态新增节点无法触发点击事件的问题

在写ajax加载数据的时候发现,后面添加进来的demo节点元素,失去了之前的点击事件.为什么点击事件失效,我们该怎么去解决呢? 其实最简单的方法就是直接在标签中写onclick="",但是这样写其实是有点low的,最好的方式还是通过给类名绑定一个click事件. 解决jQuery ajax动态新增节点无法触发事件问题的两种解决方法,为了达到更好的演示效果,假设在某个页面的body下有以下结构的代码: 1 <ul id="demo"> 2 <li c

Mint-ui中loadmore(上拉加载下拉刷新)组件在ios中滑动会触发点击事件的解决方法

bug说明: Mint-ui中loadmore(上拉加载下拉刷新)组件 在 使用fastclick的情况下 ,在ios设备中滑动会触发点击事件: 解决方法: 我是按需引入,去项目中找到loadmore下的index.js,全部引入的要找mint下面mint-ui.common.js 路径如下:你的项目名/node_modules\mint-ui\lib\loadmore\index.js 搜索 handleTouchEnd ,记得写event进去 handleTouchEnd: function

解决JavaScript拖动时同时触发点击事件的BUG

在做在线地图项目的时候,在给marker点绑定事件时,因为有点击事件click,同时又存在拖动dragEnd事件,首先没有重大缺陷,就是在用户在点击的时候,有时候本想是点击,但是他触发了drag的事件,造成不好的用户体验 bug的原因 一个完整的click事件是包含 mousedown,mouseup 两个事件的,而拖拽一个元素时,包含下面三个事件: mousedown,mousemove,mouseup, 所以我们在拖拽一个元素结束后,如果此元素上面绑定了点击事件, 就会同时触发元素的点击事件

防止滑动的时候触发点击事件

手机端在滑动过程中容易引发点击事件 解决方案: 重新封装一个点击函数 //防止滑动的时候触发点击事件 function tap(sprite, cb) { var tapStartTime = 0, tapEndTime = 0, tapTime = 300, //tap等待时间,在此事件下松开可触发方法 tapStartClientX = 0, tapStartClientY = 0, tapEndClientX = 0, tapEndClientY = 0, tapScollHeight =

Android 自定义View——自定义点击事件

每个人手机上都有通讯录,这是毫无疑问的,我们通讯录上有一个控件,在通讯录的最左边有一列从"#"到"Z"的字母,我们通过滑动或点击指定的字母来确定联系人的位置,进而找到联系人.我们这一节就通过开发这个控件,来学如何自定义控件的点击事件. 通讯录列表查找控件界面绘制 首先我们需要先将控件的基本布局绘制出来,这里我们不在做详细的解释,在<Android 自定义View--自定义View控件 >博客中,我们已经详细讲解了如何绘制自定义控件的布局.通讯录列表查找控

Android中父View和子view的点击事件的执行过程

Android中的事件类型分为按键事件和屏幕触摸事件,Touch事件是屏幕触摸事件的基础事件,有必要对它进行深入的了解. 一个最简单的屏幕触摸动作触发了一系列Touch事件:ACTION_DOWN->ACTION_MOVE->ACTION_MOVE->ACTION_MOVE...->ACTION_MOVE->ACTION_UP 当屏幕中包含一个ViewGroup,而这个ViewGroup又包含一个子view,这个时候android系统如何处理Touch事件呢?到底是ViewG

触发点击事件,接受后台参数,并把隐藏的div显示出来

1点击事件 1.1重点112和114行,112用的是正则表达式,114是加一些查找的限制,如是中文并且得3个中文字符才会自动查询.没有这些限制的话,键盘敲一次,就会查询一次,特别麻烦!!! 1.2 注意json传参数的方式 2.1接受后台参数 先把要查询的公司名字发送给后台,通过模糊查询返回一个lis给前端 把查询到的值通过不同的id.来接受. 3.1并把隐藏的div显示出来 这里用 $("#id").show();是显示不了的.因为在要显示的字段前已经被 220行这句话给全部隐藏了

RadioButtonList绑定后台数据,触发点击事件

首先前台页面放置一个RadioButtonList 控件 <asp:RadioButtonList runat="server" ID="RadioButtonList1" BorderStyle="None" RepeatColumns="3" CssClass="" RepeatLayout="Flow" AutoPostBack="true" OnSele

button按钮触发点击事件后出现自动跳转问题

在项目中遇到在点击+号按钮后出现跳转.该button在form表单内,分析原因得知,触发事件后button按钮自动提交了表单,从而出现跳转. 查找手册得知button type有三个属性值,其中默认为submit,所以在未添加type属性时,button默认为submit. 此问题在button中添加type="button"则恢复正常. 值 描述 submit 默认.按钮是提交按钮. button 按钮时可点击的按钮. reset 按钮是重置按钮(清空数据). 原文地址:https: