动态添加View位置不正确


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


向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);  

评论!

社交