如何将android popupwindoww遮住的控件点击到,然后让这个控件响应点击事件

当前访客身份:游客 [
每个人都应该开通一个博客,积累和分享所学到的东西,让大家共同来打造中国的IT硅谷。。。我的幸福是希望
:效果不错,收藏了
:楼主有没有DEMO?能不能发个DEMO ?@q...
:有好处,也有坏处
今日访问:2
昨日访问:14
本周访问:141
本月访问:118
所有访问:16936
Android中点击空白区域控件自动隐藏(事件传递机制中的一个小例子)
发表于2年前( 13:33)&&
阅读(3902)&|&评论()
0人收藏此文章,
随着android技术日趋成熟,android应用程序已经由刚开始的单纯效果展示变得越来越艺术话了,各种动画,各种布局层叠,那么由此就产生了一些问题,比如:一个listview的view的item点击时没有反应,界面上罩了层好看的蒙版后,下面的布局中的控件点击时无反应等。
今天我在修改bug的时候就遇到了这样的问题。 一、item点击时没有反应 原因:你的item中有button或者checkbox等控件,默认情况下焦点focus是最先交给这些子控件,而ListView的Item能被选中的基础是它能获取Focus焦点。 解决办法: 1、将item layout的根控件设置属性(android:descendantFocusability=”blocksDescendant”),以下是item的布局
&LinearLayout xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F4F2EE"
android:descendantFocusability="blocksDescendants"
android:orientation="vertical"
android:paddingBottom="2dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="7dp" &
&!-- lang: java --&
&ImageView/&
这样Item Layout就屏蔽了所有子控件获取Focus焦点的权限,不需要针对Item Layout中的每一个控件重新设置focusable属性. 2.将ListView的Item Layout中的所有子控件focusable属性设置为false
二、界面上罩了层好看的蒙版后,下层的布局中的控件点击时无反应 原因:上面罩得那一层蒙版将点击或者触摸事件给拦截掉了,Touchevent 中,返回值是 true ,则说明消耗掉了这个事件,返回值是 false ,则没有消耗掉,会继续传递下去。 在 View 中跟 Touch 相关的事件有 dispatchTouchEvent , interceptTouchEvnet , onTouchEvent 三种。 dispatchTouchEvent 是负责分发事件的,事件从 activity 传递出来之后,最先到达的就是最顶层 view 的 dispatchTouchEvent ,然后它进行分发,如果返回 false ,则交给这个 view 的 interceptTouchEvent 方法来决定是否要拦截这个事件,如果 interceptTouchEvent 返回 true ,也就是拦截掉了,则交给它的 onTouchEvent 来处理,如果 interceptTouchEvent 返回 false ,那么就传递给子 view ,由子 view 的 dispatchTouchEvent 再来开始这个事件的分发。
如果事件传递到某一层的子 view 的 onTouchEvent 上了,这个方法返回了 false ,那么这个事件会从这个 view 往上传递,都是 onTouchEvent 来接收
解决办法:
&RelativeLayout xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F4F2EE"
android:orientation="vertical"
android:id="@+id/title_view"
layout="@layout/title" /&
&RelativeLayout&
&/RelativeLayout&
&FrameLayout
android:id="@+id/above_fl"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/title_view"
android:background="#" &
&/FrameLayout&
以上FrameLayout就是上面罩得一层透明的罩子,如果不采取任何措施只是将这个罩到布局上面的时候,点击下面的那些控件的时候是无任何响应的,因为这个FrameLayout已经点击或者触摸事件给拦截掉了, 这时候可以使用以下的代码让点击事件穿透这个罩子,见代码
private FrameLayout outLineV
outLineView = (FrameLayout) findViewById(R.id.above_fl);
outLineView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (mPopupWindow.isShowing()) {
AnimationUtils.rotateDown(title_icon);
mPopupWindow.dismiss();
outLineView的onTouch方法返回false,这样点击或者触摸事件就穿到下面的一层啦。
更多开发者职位上
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读可以设置popupwindow外侧的控件可以点击么_百度知道
可以设置popupwindow外侧的控件可以点击么
我有更好的答案
fenlei_Window可以的 设置popup_Window.setOutsideTouchable(false).setFocusable(false)
每太懂你的意思,我希望popupWindow外侧的按钮可以点击
对啊 就是设置popupwindow 的焦点为false ,
popup_Window.setFocusable(false);
但是popupwindow中的内容就没有焦点,就不能监听这里面的事件
那是不是破pupWindow了的东西就不能点了
很有讲究的
你具体要实现什么啊?
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁在弹出menu时,怎么让menu以外的控件(popupwindow) 获取焦点响应点击事件
&来源:读书人网&【读书人网():综合教育门户网站】
在弹出menu时,如何让menu以外的控件(popupwindow) 获取焦点响应点击事件问题如上。。。求助[解决办法]必须ret
在弹出menu时,如何让menu以外的控件(popupwindow) 获取焦点响应点击事件问题如上。。。求助[解决办法]必须return false,才能使popupwindow最后显示。你先在onMenuOpened的里面第一行加上super.onMenuOpened(featureId, menu);如果没效果,把这一行改为openOptionsMenu();记住:必须放在第一行,返回也必须[解决办法]使用自定义menu吧。自己在底下放个view,按menu键的时候把它显示出来,可以实现任何想要的动作和外观。现在的基本上都是自定义menu,系统的那个太丑了。

我要回帖

更多关于 popupwindow弹出动画 的文章

 

随机推荐