以编程方式将ImageView添加到布局中

6
我希望创建从屏幕上部下降的图像。
到今天为止,我有以下内容:
ImageView mario = (ImageView) findViewById(R.id.mario);
TranslateAnimation anim = new TranslateAnimation(0f, 0f, 0, 400);
anim.setInterpolator(new LinearInterpolator());
anim.setRepeatCount(Animation.INFINITE);
anim.setDuration(800);
mario.startAnimation(anim);

问题是我必须在布局的xml文件中设置imageview,而这段代码只会创建一张图片。

我想编写应用程序,在屏幕的上部创建几个图像(例如在循环中),并使它们沿着屏幕向下移动。(我在这里使用TranslateAnimation)。 我找到了类似于这样的内容:

ImageView mario = (ImageView) findViewById(R.drawable.mario);

但我不知道如何设置不在xml文件中的ImageView的位置(这可能吗?)。我考虑创建一个LinearLayout并将其添加到ImageView中。但如何将LinearLayout添加到现有布局中?
提前感谢您的帮助 :)
2个回答

10
你可以使用类似以下的方式创建布局:

View view = (View) findViewById(R.layout.current_layout); //the layout you set in `setContentView()`
LinearLayout picLL = new LinearLayout(CurrentActivity.this);
picLL.layout(0, 0, 100, 0);
picLL.setLayoutParams(new LayoutParams(1000, 60));
picLL.setOrientation(LinearLayout.HORIZONTAL);
((ViewGroup) view).addView(picLL);

你传递给layout()的参数显然取决于你想要什么。然后,您可以创建单独的Views添加到刚刚创建的Layout中。但是我强烈建议阅读文档以了解在此处可以完成的所有操作。 ViewGroup View 编辑
ImageView myImage = new ImageView(this);
picLL.addView(myImage);
//set attributes for myImage;

最后一句代码 ((ViewGroup) view).addView(picLL); 无法正常工作,因为出现错误:"无法解析类型 ViewGroup"。此外,我们为什么不使用 view?最后一个问题是 - 如何将 ImageView 添加到此视图中? - Ganjira
ViewGroup 允许您向该 View 添加其他项。您可以尝试使用 View,但我不认为它能够添加内容,不过等我有更多时间时我会进一步检查。我将编辑我的答案,将 ImageView 添加到布局中。 - codeMagic

4
使用以下代码,您可以动态添加图片。
public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 ImageView imageview = new ImageView(MainActivity.this);
 RelativeLayout relativelayout = (RelativeLayout)findViewById(R.id.relativeLayout);
 LinearLayout.LayoutParams params = new LinearLayout
 .LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);

 // Add image path from drawable folder.
 imageview.setImageResource(R.drawable.demo_new_image);
 imageview.setLayoutParams(params); 
 relativelayout.addView(imageview); 

 }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接