1

我正在尝试以编程方式添加一个 ImageView 然后添加另一个与此相关的。我的代码:

RelativeLayout mLayout = (RelativeLayout) findViewById(R.id.myLayout);
ImageView anchor = new ImageView(getApplicationContext());
anchor.setImageDrawable(getResources().getDrawable(R.drawable.anchor));
anchor.setVisibility(View.VISIBLE);
RelativeLayout.LayoutParams anchorParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
anchorParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
anchorParams.addRule(RelativeLayout.CENTER_VERTICAL);   
mLayout.addView(anchor,anchorParams);
ImageView spinner = new ImageView(getApplicationContext());
spinner.setImageDrawable(getResources().getDrawable(R.drawable.image1));
spinner.setVisibility(View.VISIBLE);
RelativeLayout.LayoutParams spinnerParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
spinnerParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
spinnerParams.addRule(RelativeLayout.BELOW,anchor.getId());
mLayout.addView(spinner,spinnerParams);

第一个图像正是我想要的位置 - 集中 - 但第二个图像没有出现在锚点下方,而是出现在屏幕顶部,就在状态栏下方。

我错过了什么吗?

4

3 回答 3

3

我想,你得到 null anchor.getId()。在之前为您的锚视图设置一个 IDaddRule()

于 2012-12-11T15:17:56.057 回答
1

我相信您需要以编程方式为锚定一个 id,然后才能使用 anchor.setId(int) 使用 anchor.getId()。

于 2012-12-11T15:18:48.570 回答
0

很难说有什么问题,尝试制作xml并添加

LinearLayout myLayout = (LinearLayout) findViewById(R.id.LogoView);

                View hiddenInfo = getLayoutInflater().inflate(R.layout.search,
                        myLayout, false);
                myLayout.removeAllViews();
                myLayout.addView(hiddenInfo);
于 2012-12-11T15:19:12.813 回答