您的位置:首页 > 其它

动态添加View遇到的问题

2013-04-30 21:53 405 查看
帮别人改程序

写的程序有点不知所云 还没有注释 读了很久才读明白

向activit的 android.R.id.content 这个根view中 动态添加imageview的时候 所有的imageview 重叠放在左上角

原因是他没有添加定位的语句

在LayoutParams中设置 leftMargin 和 topMargin 后状况依旧

排查后发现其获取 android.R.id.content 的时候是强制转换为 ViewGroup 而非其本身实际的 FrameLayout

而ViewGroup自己是不支持对齐 margin等布局属性的

在 Nexus 4 (4.2.2)系统运行通过 位置正常

但是虚拟机 2.3.3系统中仍然是重叠放在左上角

后又指定 gravity = Grayty.LEFT

虚拟机中显示正常

ImageView iView = new ImageView(this);
iView.setImageResource(android.R.drawable.btn_radio);

FrameLayout.LayoutParams lParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
lParams.gravity=Gravity.LEFT;
lParams.leftMargin = l.getX();
lParams.topMargin = l.getY();

final FrameLayout vGroup = (FrameLayout) this.findViewById(android.R.id.content);
vGroup.addView(iView,lParams);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: