void onClick(View view) {
switch (viewgetId()) {
case Ridhome:
onBackPressed();
break;
}
}
难道不是有id判断是那个view被触发的吗
比如接着上篇 Android-View的事件分发及拦截机制简单流程先体验再研究(场景?疑问 具体?待续) ,小白现在要实现就是子View和父ViewGroup都响应点击事件。
1 单纯的都只是响应down事件
这个就很简单了 - 直接子View的public boolean onTouchEvent(MotionEvent event) 里面直接返回false就行了。也就是子控件响应了一次down后,接下来就交给父ViewGroup了(子View就啥几把也干不了了);
2 响应down和up事件,move啥的
我们知道子View如果onTouch里面返回了true,那么将会处理后续的move,up事件。而不再交给上层父ViewGroup。那父ViewGroup就没办法在Touch里面处理,所以我们只能放到dispatchTouchEvent或者onInterceptTouchEvent中处理这个down,up等事件:
比如dispatchTouchEvent中:
这样的情况就是父ViewGroup先执行点击事件,然后子View再执行。 如果您需要父ViewGroup晚点,可以延时执行啥的。
如果此时,子View的dispatchTouchEvent返回true - 表示拦截,不继续了
那么子View的所有的事件都不会响应了。其实也就是我们的一个事件先传递,touch再处理的树形图:
百度上拔个图来
简单记录下下而已,继续加深理解这是上一篇的续,还是上一篇啧啧后面是官方文档分析来着
MultiView 和 View 控件和制作出选项卡的效果 MultiView 控件是一组 View 控件的容器 使用它可定义一组 View 控件 其中每个 View 控件都包含子控件
如果要切换视图 可以使用控件的ID或者View控件的索引值 在 MultiView 控件中 一次只能将一个 View 控件定义为活动视图 如果某个 View 控件定义为活动视图 它所包含的子控件则会呈现到客户端 可以使用 ActiveViewIndex 属性或SetActiveView 方法定义活动视图 如果 ActiveViewIndex 属性为空 则 MultiView 控件不向客户端呈现任何内容 如果活动视图设置为MultiView 控件中不存在的 View 则会在运行时引发 ArgumentOutOfRangeException
一些常用的属性 方法
ActiveViewIndex属性 用于获取或设置当前被激活显示的View控件的索引值 默认值为- 表示没有View控件被激活
废话不多说 由于MultiView和View比较简单 我们一起来看以下例子吧
创建新的 ASP NET 网站项目
在 文件 菜单中 指向 新建 然后选择 网站
在 新建网站 对话框中 从 语言 下拉列表中选择 Visual C# 并选择 ASP NET 网站模板
在 位置 中 选择 >
layout为布局,布局里面可以放任何空间,获取空间可以用findViewById方法获取
android 获取某个布局控件 添加到另一个布局中
protected void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutactivity_main);
LinearLayout relativeLayout = (LinearLayout) findViewById(Ridlayout456);
ImageView imgApple2 = new ImageView(this);
imgApple2setImageResource(Rdrawableic_launcher);
relativeLayoutaddView(imgApple2);
LayoutInflater factorys = LayoutInflaterfrom(MainActivitythis);
final View textEntryView = factorysinflate(Rlayoutlayout1, null);
// LinearLayout linearLayout = (LinearLayout) textEntryView
// findViewById(Ridlayout1);
// relativeLayoutaddView(linearLayout);
EditText editText1 = (EditText) textEntryView
findViewById(RideditText1);
relativeLayoutaddView(editText1);
以上就是关于给layout添加点击事件,怎么获取到真正点击的子控件对象全部的内容,包括:给layout添加点击事件,怎么获取到真正点击的子控件对象、Android-View的事件分发及拦截-父控件和子控件都处理触摸事件的方式、ASP.NET服务器控件MultiView和View等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)