精华内容
下载资源
问答
  • Android点击监听事件经常用到,经常用到的有以下几种
  • Button 三种点击监听事件写法

    千次阅读 2016-09-07 08:14:50
    Button最简单的点击监听事件,Button最常用的点击监听事件,Button多按钮点击监听事件

    ,首先说明一下,这些点击监听事件,对View的子类都是适用的,比如说TextView,LinearLayout等,但是要点击的话,Button有更多跟点击相关的功能,比如点击时改变背景。以下介绍3种方法。

    1.布局文件定义onClick(最简单)

    这样,按钮的id的定义就不是必须的了。只需要2步
    在.xml布局文件中的Button组件下,定义一个

    android:onClick="myClick"

    在相应Activity中,写出一个对应方法,这个方法的:参数(View v),返回值(void),访问权限(public)都是必须这样的。

    public void myClick(View v){
    }

    例子:
    (1).xml文件:

        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.test.MainActivity" >
    
        <Button 
            android:onClick="myClick"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="button"/>
    
    </RelativeLayout>

    (2)MainActivity:

    package com.example.test;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Toast;
    
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
    public void myClick(View v){
        Toast.makeText(this, "你点击了这个按钮", Toast.LENGTH_SHORT).show();
    }
    }

    2.使用匿名类的方式来注册监听器

    这种方法麻烦一点点,但是非常常用,适用于按钮不是太多的情况。有3步,写在代码注释中:
    1.布局文件设置id
    2.activity中获取对象
    3.activity中设置监听事件(使用匿名类)
    布局文件:

    <!--1.设置id-->
    <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Button"/>

    MainActivity中代码:

    
    public class MainActivity extends Activity  {
    
        Button button;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //2.activity中获取对象
            button= (Button) findViewById(R.id.button);
            //3.activity中设置监听事件(使用匿名类)
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(MainActivity.this, "button被点击", Toast.LENGTH_SHORT).show();
                }
            });
        }
    }

    3.使用接口

    感觉这是最麻烦的方法,有5步,适用于按钮多的情况。使用接口OnClickListener,下面是步骤,并且写在代码注释中:
    1.设置按钮的id
    2.要求Activity声明接口:View.OnClickListener
    3.在onCreate获取按钮对象
    4.添加监听器
    5.点击事件判断点击控件
    在布局文件button属性中设置id:

    <!--1.设置id-->
    <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Button"/>

    MainActivity 中的代码

    //2.MainActivity 声明接口
    public class MainActivity extends Activity implements View.OnClickListener {
    
        Button button;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //3.获取button对象,使用在布局文件里设置的id
            button= (Button) findViewById(R.id.button);
           //4.给button添加监听事件
            button.setOnClickListener(this);
        }
    //下面是当活动被点击时调用的方法
        @Override
        public void onClick(View view) {
            switch (view.getId()){
            //5.当被点击控件id为button的id时,这里写响应事件
                case R.id.button:
                    Toast.makeText(this, "button被点击了", Toast.LENGTH_SHORT).show();
                    break;
                default:
                    break;
            }
        }
    展开全文
  • **dialog空白处的点击监听事件** 当dialog弹出的时候,点检dialog外的空白处,事件现在不仅是需要dialog关闭,还需要做一个事件处理,所以我想问的是有没有什么方法可以监听空白处的点击事件。
  • 虽然recyclerview为 整个recyclerview设置了一些监听事件,但是没有自带为其中的item设置点击事件本文将提供一种recyclerview中item的点击监听事件的实现方法 先看看效果图: 第一,你需要一个接口:public ...

    虽然recyclerview为 整个recyclerview设置了一些监听事件,但是没有自带为其中的item设置点击事件

    本文将提供一种recyclerview中item的点击监听事件的实现方法
    先看看效果图:
    这里写图片描述

    第一,你需要一个接口

    public interface OnItemClickListener {
            void OnItemclick(View view,int position);
    }

    第二,再适配器中 声明一个该接口的引用

    public class Adapter extends RecyclerView.Adapter<ViewHolderr> {
        private LayoutInflater layoutInflater;
        private Context context;
        private String[] datas;
        private OnItemClickListener onItemClickListener;//声明一个接口的引用
    
        public Adapter(Context context, String[] datas) {//构造函数传入Context对象和数据源
            this.layoutInflater=LayoutInflater.from(context);
            this.context = context;
            this.datas = datas;
        }
    
        @Override
        public ViewHolderr onCreateViewHolder(ViewGroup parent, int viewType) {
            View view=layoutInflater.inflate(R.layout.item,parent,false);
            ViewHolderr viewHolderr=new ViewHolderr(view);
            return viewHolderr;
        }
    
    
        @Override
        public void onBindViewHolder(final ViewHolderr holder, int position) {
            holder.getButton().setText(datas[position]);
            //在该函数中为recyclerview的视图绑定监听事件
            if (onItemClickListener != null) {
                holder.getButton().setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                      onItemClickListener.OnItemclick(holder.itemView, holder.getLayoutPosition());
                    }
                });
            }
        }
        @Override
        public int getItemCount() {
            return datas.length;
        }
        public  void setOnItemClickListner(OnItemClickListener onItemClickListner){
            this.onItemClickListener=onItemClickListner;
        }
    }

    第三,就是在Mainactivity中给recyclerview设置监听事件了:

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ButterKnife.bind(this);
            final LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
            recyclerview.setLayoutManager(linearLayoutManager);
            Adapter adapterr=new Adapter(this,datas);
            adapterr.setOnItemClickListner(new OnItemClickListener() {
                @Override
                public void OnItemclick(View view, int position) {
                    Toast.makeText(MainActivity.this,  datas[position], Toast.LENGTH_SHORT).show();
                }
            });
            recyclerview.setAdapter(adapterr);
            recyclerview.setHasFixedSize(true);
            recyclerview.setItemAnimator(new DefaultItemAnimator());
    
        }

    以下是对整个recycler的监听事件(来自https://developer.android.com/

     recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
                //返回当前recyclerview的可见的item数目,也就是datas.length
                //dx是水平滚动的距离,dy是垂直滚动距离,向上滚动的时候为正,向下滚动的时候为负
                @Override
                public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                    super.onScrolled(recyclerView, dx, dy);
                    int firstVisibleItemPosition=linearLayoutManager.findFirstVisibleItemPosition();//可见范围内的第一项的位置
                    int lastVisibleItemPosition=linearLayoutManager.findLastVisibleItemPosition();//可见范围内的最后一项的位置
                    int itemCount=linearLayoutManager.getItemCount();//recyclerview中的item的所有的数目
    
                    //System.out.println(linearLayoutManager.getItemCount());
                    System.err.println(dy);
                }
            });
            recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
    
                @Override
                public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                    super.onScrollStateChanged(recyclerView, newState);
                    /*
                    new State
                    0(SCROLL_STATE_IDLE)表示recyclerview是不动的(The RecyclerView is not currently scrolling.)
                    1(SCROLL_STATE_DRAGGING)表示recyclerview正在被拖拽(The RecyclerView is currently being dragged by outside input such as user touch input.)
                    2(SCROLL_STATE_SETTLING)表示recyclerview正在惯性下滚动(The RecyclerView is currently animating to a final position while not under outside control.)
                     */
                    switch(newState)
                    {
                        case 0:
                            System.out.println("recyclerview已经停止滚动");
                            break;
                        case 1:
                            System.out.println("recyclerview正在被拖拽");
                            break;
                        case 2:
                            System.out.println("recyclerview正在依靠惯性滚动");
                            break;
                    }
                }
            });

    Demo源码已经上传到github.com,需要的朋友请戳https://github.com/Gpwner/Recyclerview/tree/master

    展开全文
  • 高德地图设置的onMarkerClick点击监听事件返回值@Override public boolean onMarkerClick(Marker marker) { ...todo something return true;//false 点击marker marker会移动到地图中心,true则不会 }

    高德地图设置的onMarkerClick点击监听事件返回值

    @Override
        public boolean onMarkerClick(Marker marker) {
            ...todo something
            return true;//false 点击marker marker会移动到地图中心,true则不会
        }
    展开全文
  • 设置点击监听事件

    千次阅读 2017-07-25 18:03:01
    我们在写监听事件时,往往是mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } });我们可以这样处理,在Activity的父类上写这样一个方法 /** *

    我们在写监听事件时,往往是

    mButton1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                }
            });
    mButton2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                }
            });

    我们可以这样处理,在Activity的父类上写这样一个方法

        /**
         * 设置点击监听的方法
         * @param view
         */
        public void setOnClick(View... view) {
            for (View v : view) {
                v.setOnClickListener(this);
            }
        }

    然后子Activity继承并实现这个方法,在初始化的时候设置监听

    setOnClick(mButton1,mButton2);

    并且在方法体实现

    @Override
    public void onClick(View v) {
          switch (v.getId()) {
              //按钮mButton1点击事件处理
              case R.id.mButton1:
                   break;
              //按钮mButton2点击事件处理
              case R.id.mButton2:
                   break;
          }
    }

    这样以后,大家是不是觉得代码看起来更加整齐有序了呢

    展开全文
  • onClick事件 监听事件的几种写法 1、匿名内部类的实现 2、独立类的实现 3、实现接口的方式来实现 以Button为例: 1、匿名内部类实现监听事件
  • PopupWindow点击监听事件

    千次阅读 2016-09-02 21:28:48
    PopupWindow是否响应touch事件,默认为true。设置为fasle的话,所有的触碰事件均无响应。 2.setFocusable(boolean focusable) 是否具有获取焦点的能力,默认为false。普通控件一般是不需要获取焦点的,所以...
  • Button与ImageButton自身都有一个onClick点击事件,通过自身的.setOnClickListener...监听事件实现的几种方法: 1.匿名内部类 2.独立类的实现 3.接口的形式实现  一、匿名内部类的实现Button监听事件 1...
  • layer 在标题中加点击监听事件

    千次阅读 2018-09-19 23:15:58
    给这个id一个点击监听事件 $(document).on('click','#conform',function(){ test(); }); 另外还需要设置属性在layer中设置属性 move:false; layer属性   键: 值 描述 下表的属性都是默...
  • Android控件点击监听事件失效

    千次阅读 2017-12-05 14:57:58
    情景:父布内有很多子布局,例如LinearLayout 内部有好几个Button ,父布局点击事件失效 原因:默认的focus是交给了子控件的,因此父控件市区焦点,监听失效 解决:让父布局获得焦点,让子布局失去焦点 方法一 在父...
  • NavigationView头部点击监听事件

    千次阅读 2020-01-13 17:36:35
    "点击登录" , Toast . LENGTH_SHORT ) . show ( ) ; break ; } } 注意!!由于已经动态添加了,所以xml中下面这句必须删掉,不然就会出现两个头部的情况,如图所示。 app : headerLayout = "@layout/...
  • RecyclerView的Item设置点击监听事件

    千次阅读 2017-03-13 19:04:40
    其方便性和可最大定制性,让它比listview更让开发者青睐,也正是由于RecyclerView的可定制性太强,好多功能实现都需要自己来写,今天我简单梳理下在RecyclerView中给Item设置点击事件的实现流程。RecyclerView不像...
  • 在videoview中增加点击监听事件

    千次阅读 2017-08-22 10:02:21
    逻辑要求:点击屏幕任意空白处,暂停按钮出现,点击暂停按钮,视频暂停并出现播放按钮,同时调起隐藏的下拉框。 android:id="@+id/pause_btn" android:layout_width="wrap_content" android:layout_height=...
  • RecycleView确实是一个好东东。...1,在adapter类中,需要创建两个点击事件和个监听事件。 public class ListenAdapter extends RecyclerView.Adapter<ListenAdapter.MyViewHolder> { private Context con...
  • js 点击监听事件

    千次阅读 2013-08-02 14:34:00
    2019独角兽企业重金招聘Python工程师标准>>>  $(document).click(function(event){  document.onclick = ...监听是否隐藏 转载于:https://my.oschina.net/u/238082/blog/149439
  • android给控件添加长按和点击事件监听的用法,如果控件同时有长按和点击事件需要处理,不需要同时响应的时候,只需要将长按事件reture true,就可以监听长按和点击,如下代码: price_id_buy....
  • 给RecyclerView的item添加点击监听事件

    万次阅读 多人点赞 2016-10-25 08:40:45
    给recyclerView的item添加点击事件监听我知道的有2种,一种是直接给item设置一个id,然后按照正常的流程在adapter里面给item添加方法setOnclickListener(),这个就不说 今天说的是给item添加回调的监听主布局 ...
  • 本人小白一只,之前在用到ExpandableListView的时候,需要对item的点击事件做一个监听操作,然后我就在MainActivity中重写了setOnItemClickListener的方法,发现然并卵啊。 我就去翻适配器的代码,发现了我重写的...
  • Android按钮的五种点击监听事件处理

    千次阅读 2017-01-12 12:20:33
    1、匿名内部类作为监听器 button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub } }); 2、内部类作为监听器(可以使用) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 211,894
精华内容 84,757
关键字:

点击监听事件