tablerow 不能通过滚动选中的问题(只有第一行会被选中)

问题描述:

在activity中使用tablelayout布局方式模拟listview的样式,但当滚动时只有第一行会被选中,其他行都不能被选中,也就是滚动不下去。


今天遇到的这个问题比较特别,相信朋友们很少会遇到,但如果你遇到了这样的问题,可以试着这样解决:
解决方案:

经过问题排查,发现,问题出在该activity的对返回键的捕捉上。为了捕捉返回键,使其点击时不会退出程序,只返回到主tab,我在代码中这样写的:

@Override
		public boolean onKeyDown(int keyCode, KeyEvent event) {
			if(keyCode==KeyEvent.KEYCODE_BACK)
				SystemUtil.back_forward_tab(0);		
			return true;
		}

问题就出在这段代码上。通过观察发现,这段代码其实很有问题,它其实在捕获返回键的同时也捕获了其他的按键,并都返回true,只是在遇到返回键时执行了
SystemUtil.back_forward_tab(0);
用来返回首页tab。但这无形中就覆盖了系统对其它按键的处理方式,都改成了return true了。所以,正确的代码应该这样写:

@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {		
		if(keyCode==KeyEvent.KEYCODE_BACK){
			SystemUtil.back_forward_tab(0);		
			return true;
		}				
		else
			return super.onKeyDown(keyCode, event);
	}

在不是返回键时,执行父类的默认方法处理。
因此,在覆盖父类的方法时要注意,不要随意更改父类的处理方式,要只改需要的地方。





你可能感兴趣的:(tablerow 不能通过滚动选中的问题(只有第一行会被选中))