将图像添加到Horizo​​ntalScrollView

时间:2013-07-09 22:32:26

标签: android image add horizontalscrollview

我想创建一个Horizo​​ntalScrollView,它从drawable文件夹中读取图像。图像的名称是“image1”“image2”......“image20”。我不知道如何使用这些数字来阅读它们。这就是我所拥有的:

protected void onCreate(Bundle savedInstanceState) {

   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
   LinearLayout sv = (LinearLayout) findViewById (R.id.images);
   for (int i=1 ; i<20; i++){
       ImageView iv = new ImageView (this);
       iv.setBackgroundResource (R.drawable.image1);
       sv.addView(iv);
   }
}

3 个答案:

答案 0 :(得分:3)

你可以用两种方式做到这一点。

首先要创建一个包含您想要使用的图像ID的数组,并在for周期中,只需将图像添加到您的布局中:

int[] images = new int[]{R.drawable.image1, R.drawable.image2, ... R.drawable.image20};
LinearLayout sv = (LinearLayout) findViewById (R.id.images);
for (int i=0 ; i<20; i++){
   ImageView iv = new ImageView (this);
   iv.setBackgroundResource (images[i]);
   sv.addView(iv);
}

或者第二种方式,你可以创建类似的东西:

 for (int i=1 ; i<=20; i++){
   String uri = "drawable/image"+i;
   // int imageResource = R.drawable.image1;
   int imageResource = getResources().getIdentifier(uri, null, getPackageName());

   ImageView iv = new ImageView (this);
   iv.setBackgroundResource (imageResource);
   sv.addView(iv);
 }

我没有测试代码,但我认为它们应该有效。

答案 1 :(得分:1)

如果您希望在没有数组列表的情况下使用drawables,则可以执行以下操作:

getResources().getIdentifier("Name of the Drawable", "drawable", "Your Package Name");

所以你的代码将是:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
    LinearLayout sv = (LinearLayout) findViewById (R.id.images);

    for (int i=1 ; i<20; i++){
        ImageView iv = new ImageView (this);
        int myImage = getResources().getIdentifier("image"+i, "drawable", "Your Package Name");
        iv.setBackgroundResource(myImage);
        sv.addView(iv);
    }

}

答案 2 :(得分:0)

很多像这样的例子都显示了首先建立你的图像列表。然后你可以使用你的代码并遍历列表。

类似

List<Drawable> imagesToAdd = Arrays.asList(R.drawable.image1,R.drawable.image2, .... R.drawable.image20);

然后你甚至可以使用foreach循环来迭代这个。

for (Drawable image in imageToAdd) {
  etc...
}