2014-12-04 160 views
1

我试图以编程方式设置LayoutParams.BELOW。在这里我的代码:以编程方式设置LayoutParams.BELOW

RelativeLayout layout = new RelativeLayout(this.getActivity()); 
    layout.setLayoutParams(new RelativeLayout.LayoutParams(
      LayoutParams.FILL_PARENT, 
      LayoutParams.FILL_PARENT)); 
    layout.setBackgroundColor(Color.parseColor("#CCCDCDCD")); 

    ImageView imageView = new ImageView(this.getActivity()); 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.CENTER_IN_PARENT); 
    imageView.setLayoutParams(params); 
    imageView.setBackgroundResource(R.drawable.create_template); 

    AnimationDrawable frameAnimation = (AnimationDrawable) imageView.getBackground(); 

    if (frameAnimation != null) { 
     frameAnimation.start(); 
    } 

    TextView textView = new TextView(this.getActivity()); 
    params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.BELOW, imageView.getId()); 
    textView.setLayoutParams(params); 
    textView.setText("Generating information..."); 

    layout.addView(imageView); 
    layout.addView(textView); 

    return layout; 

但它没有正确定位。任何想法为什么它没有很好的定位?

+0

你贴错代码。没有“下方”可以看到,只是“上方”。你的imageview有一个ID? – ElDuderino 2014-12-04 15:41:26

+0

对不起,即使在下面或上面都不起作用... – Sonhja 2014-12-04 15:54:22

回答

4

ImageView没有ID。你需要给它一个。无论是定义一些常量整数值,或使用View.generateViewId(),并在布局PARAMS使用它之前调用setId()

ImageView imageView = new ImageView(this.getActivity()); 
imageView.setId(View.generateViewId()); 
... 
params.addRule(RelativeLayout.BELOW, imageView.getId()); 
+0

这对我来说非常合适! – Sonhja 2014-12-04 15:56:02