2013-03-12 6 views
6

Mam napisany kod, który ładuje obraz w widget ImageView:Tworzenie ImageViews dynamicznie wewnątrz pętli

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.gallery); 
    i = (ImageView)findViewById(R.id.imageView1); 

    new get_image("https://www.google.com/images/srpr/logo4w.png") { 
     ImageView imageView1 = new ImageView(GalleryActivity.this); 

     ProgressDialog dialog = ProgressDialog.show(GalleryActivity.this, "", "Loading. Please wait...", true); 

     protected void onPreExecute(){ 
      super.onPreExecute(); 
     } 

     protected void onPostExecute(Boolean result) { 
      i.setImageBitmap(bitmap); 
     dialog.dismiss(); 
     } 
    }.execute(); 


} 

bu teraz chcę, aby załadować kilka obrazów. za to muszę tworzyć widoki dynamicznie obraz ale nie wiem jak ...

Chcę uruchomić mój kod wewnątrz pętli for:

for(int i;i<range;i++){ 
    //LOAD SEVERAL IMAGES. READ URL FROM AN ARRAY 
} 

moim głównym problemem jest stworzenie kilku ImageViews wewnątrz pętli dynamicznie

+0

Czy istnieje szczególny powód dlaczego nie można użyć wbudowanych elementów sterujących listy Androida? – Premsuraj

+0

@Premsuraj: nie, czy mogę użyć do tego celu wbudowanych widgetów? w jaki sposób? – Fcoder

+0

Dlaczego potrzebujesz wielu widoków zdjęć? Co jest celem? czy chcesz wyświetlać obrazy na liście? –

Odpowiedz

14

można zmodyfikować układ, źródło obrazu i bez obrazów (może być dynamiczny, jak również) w zależności od zapotrzebowania ...

LinearLayout layout = (LinearLayout)findViewById(R.id.imageLayout); 
for(int i=0;i<10;i++) 
{ 
    ImageView image = new ImageView(this); 
    image.setLayoutParams(new android.view.ViewGroup.LayoutParams(80,60)); 
    image.setMaxHeight(20); 
    image.setMaxWidth(20); 

    // Adds the view to the layout 
    layout.addView(image); 
} 
+0

Witaj Hussainie. Dlaczego ustawiasz setMaxHeight i setMaxWidth? –

+0

@ Mitulátbáti: http://developer.android.com/reference/android/widget/ImageView.html#setMaxHeight(int) –

+0

Czy możemy ustawić margines na ten widok obrazu? –

1

Można użyć tego kodu do tworzenia ImageViews

ImageView image = new ImageView(this); 
LinearLayout.LayoutParams vp = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
image.setLayoutParams(vp); 
image.setMaxHeight(50); 
image.setMaxWidth(50); 
// other image settings 
image.setImageDrawable(drawable); 
theLayout.addView(image); 

gdzie theLayout jest układ chcesz dodać swoje poglądy obraz.

Aby uzyskać więcej informacji, sprawdź stronę dev, gdzie znajdują się wszystkie możliwe opcje.

0

Spróbuj

rootLayout = (LinearLayout) view1.findViewById(R.id.linearLayout1); 

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
    params.gravity = Gravity.CENTER_VERTICAL; 

    params.setMargins(0, 0, 60, 0); 


    for(int x=0;x<2;x++) { 
     ImageView image = new ImageView(getActivity()); 

     image.setBackgroundResource(R.drawable.ic_swimming); 
     rootLayout.addView(image); 
    }