1

drawable フォルダーから画像を読み取る Horizo​​ntalScrollView を作成したいと思います。画像の名前は「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);
   }
}
4

3 に答える 3

3

これには 2 つの方法があります。

最初の 1 つは、使用したい画像の 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);
}

または 2 番目の方法では、次のようなものを作成できます。

 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);
 }

コードはテストしていませんが、動作するはずです。

于 2013-07-09T22:43:48.053 に答える
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);
    }

}
于 2013-07-09T22:50:34.983 に答える
0

このような多くの例は、最初に画像のリストを構築することを示しています。そして、コードを使用してリストを反復処理できます。

だから何か

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

次に、foreach ループを使用してこれを繰り返すこともできます。

for (Drawable image in imageToAdd) {
  etc...
}
于 2013-07-09T22:39:35.920 に答える