关于焦点获取的问题

ccll_4177 2010-07-13 03:34:02
我的布局文件是一个自定义的View,下面是一个ScrollView,每次都要点一下才能显示出View画的图形,怎么设置焦点也不行,类似的问题还有键盘事件时,第一次点击时需要两次才能响应,之前我碰到过一篇文章解决这个问题的,当时没有Mark,现在回去翻找不到了,自己当时看的时候也没用心,所以这里再次询问大家,帮助解决,
...全文
609 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
jing810863877 2010-07-16
  • 打赏
  • 举报
回复
回顶来了。
ccll_4177 2010-07-14
  • 打赏
  • 举报
回复
恩,我也是这么想的,回来再试一下,现在这个版本的还暂时不用,结贴给分~~!
ccll_4177 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 tonkey520 的回复:]
我的View上画的图,点击向下方向键,和其他方向键,分别向各个方向移动,就是第一次要点2下才有反应
[/Quote]

看24楼,把你的View对象使用setFocusable(true)
Tonkey520 2010-07-14
  • 打赏
  • 举报
回复
我的View上画的图,点击向下方向键,和其他方向键,分别向各个方向移动,就是第一次要点2下才有反应
oyq_yangy 2010-07-13
  • 打赏
  • 举报
回复
这就有可能是焦点问题了,因为第一次点击可能是让它获得了焦点,所以你先确认一下你的view的焦点设对了没有。
ccll_4177 2010-07-13
  • 打赏
  • 举报
回复
可是这个帖子还有一个问题没有解决,就是为什么第一次要点击两下按键,按键的事件才能响应?
ccll_4177 2010-07-13
  • 打赏
  • 举报
回复
也多谢20楼
ccll_4177 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 oyq_yangy 的回复:]
无论有没有焦点可见的view都需要绘制出来。。。所以你怎么确定第一次无法绘制出来是和焦点有关的?当然,如果焦点变化view会invalidete,所以能绘制。所以你要不直接调用invalidate试试看看。
[/Quote]

多谢提醒,是我前面删代码的时候删掉了个启动线程的代码,致使画面一直是初始状态,就没有画,就是死活没有想到。

这个事提醒我,下次一定要小心谨慎,每次更改代码之后都要测试下。
dinjay 2010-07-13
  • 打赏
  • 举报
回复
你单步调试一下,在ondraw上打断点,你看看你点击的时候为什么会去调用重绘,而一上来不走ondraw绘制。
oyq_yangy 2010-07-13
  • 打赏
  • 举报
回复
无论有没有焦点可见的view都需要绘制出来。。。所以你怎么确定第一次无法绘制出来是和焦点有关的?当然,如果焦点变化view会invalidete,所以能绘制。所以你要不直接调用invalidate试试看看。
ccll_4177 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 dinjay 的回复:]
你view画的东西画完了要invalidate那个view
[/Quote]

在View类中肯定是postInvalidate()了啊,要不怎么后面会显示,
在Activity也要invalidate ?
ccll_4177 2010-07-13
  • 打赏
  • 举报
回复
一开始这样的


非要点一下才能显示东西

dinjay 2010-07-13
  • 打赏
  • 举报
回复
你view画的东西画完了要invalidate那个view
ccll_4177 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 linshutao 的回复:]
楼主记得不要在onDraw()以外的其他地方画~~~
[/Quote]
看来楼上没明白意思啊,我还想说再别的onDraw()以外的地方画了,能显示么?
这个显然是焦点获取的问题,View没有获取焦点,可是设置了焦点之后还是要点一下才能显示出画的东西
charles_lc 2010-07-13
  • 打赏
  • 举报
回复
恩 但是你要focus的话 必须是要加这个attribute的
doc:By default the user can not move focus to a view; by setting this attribute to true the view is allowed to take focus.
如果加了的话我就不知道了 你可以把code贴出来大家看看
linshutao 2010-07-13
  • 打赏
  • 举报
回复
楼主记得不要在onDraw()以外的其他地方画~~~
ccll_4177 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 standatw 的回复:]
xml文件加了focusable吗?
[/Quote]
因为我用RelativeLayout,直接在Activity写的上面是自己画的View ,下面是显示图像信息的一个Scroll,Scroll部分是用XML文件,写好的,在Activity中在RelativeLayout把自己画图的View ,用
addView(),加上的
ccll_4177 2010-07-13
  • 打赏
  • 举报
回复
图像显示的还是不行啊,非得要在屏幕上随便点下,画的图形才能出现
charles_lc 2010-07-13
  • 打赏
  • 举报
回复
xml文件加了focusable吗?
vclongking 2010-07-13
  • 打赏
  • 举报
回复
LZ用View对象的requestFocus()方法获取试一下了
加载更多回复(8)

80,359

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧