【发布时间】:2016-08-04 08:36:32
【问题描述】:
我无法将子视图添加到以编程方式添加的 ViewGroup。
首先,我创建一个 GroupView (_view) 并将其添加到 Background RelativeLayout (_root),如下所示...
_view = new ViewGroup(MainActivity.this) {
@Override
protected void onLayout(boolean b, int i, int i1, int i2, int i3) {
}
};
_view.setBackgroundColor(0xFF00FF00);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 200);
params.setMargins(10, 0, 10, 0);
_view.setLayoutParams(params);
_view.setTranslationX(0);
_view.setTranslationY(positionY - 80);
selectView(_view);
_root.addView(_view);
_view.setTag(R.string.viewID, "" + viewNum);
_view.setTag(R.string.viewSelected, "" + 0);
viewNum ++;
效果很好。然后我尝试像这样向新的 GroupView (_view) 添加一个视图...
ImageView dragIcon = new ImageView(MainActivity.this);
dragIcon.setImageResource(R.drawable.drabicon);
RelativeLayout.LayoutParams imgParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
imgParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
imgParams.setMargins(0,0,30,0);
dragIcon.setLayoutParams(imgParams);
dragIcon.setTranslationY(_view.getTranslationY());
_view.addView(dragIcon); // This Is What I Want, But This Doesn't Work.
//_root.addView(dragIcon); // Don't Want This, But This Works.
但它没有被添加,或者它不可见或其他什么。现在,如果我像 _root.addView(dragIcon); 这样使用 Background RelativeLayout (_root),它工作正常,ImageView 会被添加。
那么为什么不能使用_view ViewGroup、_view.addView(dragIcon)?
【问题讨论】:
-
避免使用 _VarName 作为实例变量,即使是 android studio code inspect 也会建议你对非公共和非静态字段使用 m 前缀。
-
确保将 dragIcon 添加到 _view,然后将 _view 添加到 _root。