我正在研究扩展 ViewGroup 以安排 GridView 的视图项的类。
我可以通过以下方式轻松地在其中添加一个新的 View 项目:
ImageView view = new ImageView(context);
view.setImageBitmap(BitmapFactory.decodeResource( getResources(), R.drawable.ic_launcher));
addView(view);
或者删除查看项目也很容易
removeViewAt(remove_index)
交换项目可以通过
addView(new_index, removeViewAt(old_index));
但是当一个项目被拖到另一个项目上时,我想复制 View 项目。我试图通过
addView(getChildAt(index))
这显示了异常错误
指定的孩子已经有一个父母。您必须先在孩子的父母上调用 removeView()
我还尝试将所有视图项存储在列表中,调用方法 removeAllView() 并再次在类中添加视图。
ArrayList<View> children = new ArrayList<View>();
for (int i = 0; i < getChildCount(); i++){
children.add(getChildAt(i));
}
children.add(getChildAt(index)); // duplicate this item
removeAllViews();
for (int i = 0; i < children.size(); i++){
addView(children.get(i));
}
这仍然显示如上的异常错误:
视图膨胀可能有效,但我想复制相同的视图而不使用外部资源。
因此,我希望该方法将该视图与父 ViewGroup 分离,并在类中对其进行多次复制(复制)。
任何帮助表示赞赏。