我想创建一个HorizontalScrollView,它从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);
}
}
答案 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...
}