2 qq 16382309 qq_16382309 于 2016.01.29 13:51 提问

View和button的一个问题

Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
这个v和button有什么关系吗?可以相互转化吗?

5个回答

bdmh
bdmh   Ds   Rxr 2016.01.29 13:52
已采纳

v就是你点击的button,他俩是一个对象

qigemingzitt
qigemingzitt   2016.01.29 14:18

v 可以强转成Button 它们是同一个Button

qq_16382309
qq_16382309 谢谢,可以使用,我是那个方法没拿出来,怪不得报错误
2 年多之前 回复
qq_16382309
qq_16382309   2016.01.29 13:58

但是我在点击事件之外使用button来代替v行吗??

crazy1235
crazy1235 点击事件之外当然用button
2 年多之前 回复
crazy1235
crazy1235   Ds   Rxr 2016.01.31 20:26

V指的就是你的button

a_running_wolf
a_running_wolf   2016.02.02 17:21

我觉的上边的回答太粗糙了!
你说的 v 其实是 onClick 方法的入参,建议你可以看Android源码,不必看太多,了解这个Onclick事件的运行机制就可以了。还是回归主题吧,你应该注意到这个 v 是View类,在android中View类是所有可见组件的父类或间接父类(可以是按钮、输入框...),而setOnclick...就好像一个媒婆,作用就是给xxx(xxx.setOnClickLi...)和 v 绑定,你给谁添加监听,v 就可以是谁。
举个例子

 OnClickListener myListener = new OnClickListener() {

        @Override
        public void onClick(View v) {

        }
    };

有这么个OnClickListener,现在你到处去用
button1.setOnclickListener(myListener);
textview1.setOnclickListener(myListener);
imageview1.setOnclickListener(myListener);
.....
那么你点击它们时都会响应,v 可以是它们中任意一个,但是我们要区分不同控件的不同响应,在onclick(View v)方法中用switch(v.getId()){
case ....}来区分不同控件,就可以响应不同的点击。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
使UIButton的子view不影响button的点击事件
UIButton* btn = [UIButton buttonWithType:UIButtonTypeCustom]; UIView* subView = [[UIView alloc] init]; subView .userInteractionEnabled = NO; [btn addSubview:subView];
自定义view,之自定义button
主要方便记忆使用!
UIView上添加了一个按钮和一个单击手势的事件相应,互相不影响的处理方法。。
tapGesture.delegate = self; - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { CGPoint location = [touch locationInView:self.view]; if
关于在自定义View中添加Button按钮以及实现点击事件
关于在自定义View中添加Button按钮以及实现点击事件环境:项目中一个自定义View需要添加一个Button并实现点击事件。 主要问题:可以添加Button控件但是目前能力有限无法实现OnClick监听目前解决办法: 1、在dispatchDraw中绘制一个Button按钮(填充绘制矩形),在同样的区域绘制一个TextView并初始化,添加按钮文字。private void initmAr
Button点击后,如何实现两个view之间的跳转
For example:      一个UIView,Button是用代码实例化的 ,然后想点击Button之后,跳转到 另一个ViewController上去。 然后这个ViewController上也有一个按钮 可以返回。请教如何实现。  方法一:  使用导航 第一个按钮方法: [self.navigationController pushViewController:
ios加在View上的按钮无响应
上面这幅图片黑色是一个view, 黄色是2个button, 虽然我们现在能看到这2个button, 但是我们点击它是无响应的 原因1: 这2个button 已经不在这个view的frame内, 也就是超出边界,(当然, 如果有交叉, 一点点,我们点那一点点还是可以出发按钮点击事件的) 原因2: butotn加的视图里, 可能有imageVIew或者UILabel, 因为这2个控件默认交互是关闭
iOS 事件穿透,点击穿透,控件不响应事件
前言 小伙伴们在开发中是否遇到过这样的需求呢,一个控件的某个部分被另外一个控件遮挡住,当点击这个重叠部分时,需要响应被遮盖控件的点击事件,就如下图所示 当我们点击区域3时,响应蓝色按钮的点击事件,点击区域1和2时,响应红色按钮的点击事件,对于区域1和3没什么好说的,那如何让红色按钮响应区域2的点击呢?这就是笔者今天要讲的内容。 事件传递 大家应该都知道,事件从应用程序开始,按照从上到下的顺
自定义View和自定义Button
很简单,学习自定义的View,还有自定义的Button,其实也就是一个View。
Android:如何把一个view(Button、TextView等)置于底部
将Button或TextView放在一个LinearLayout,然后设置这个LinearLayout的属性android:layout_alignParentBottom为true即可
UIButton超出UIView边界不可点击
当按钮超过了父视图范围,点击是没有反应的。因为消息的传递是从最下层的父视图开始调用hittest方法。- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { UIView *view = [super hitTest:point withEvent:event]; return view; } 当存在vi