2015-05-22 3 views
3

Я пытаюсь создать массив ImageViews программно. Вот мой код (я и J является для счетчиков)Android программно создан ImageView не отображается

imageViews = new ArrayList<ImageView>(); 
    for(int i = 0; i < 3; i++){ 
     for(int j = 0; j < 3; j++){ 
      if(3*i+j != 8) { 
       ImageView subImage = new ImageView(this); 
       subImage.setImageBitmap(pieces.get(3 * i + j)); 
       LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(100, 100); 
       subImage.setLayoutParams(lp); 
       subImage.setX(i * 100f); 
       subImage.setY(j * 100f); 
       subImage.setVisibility(View.VISIBLE); 
       imageViews.add(subImage); 
      } 
     } 
    } 

части приведено ArrayList из Bitmaps. Во всяком случае, ни один из представлений изображений не отображается. Я новичок во всем этом, поэтому я уверен, что я делаю всевозможные ошибки. Спасибо заранее!

+1

как вы показываете изображение? –

+0

вы забыли addView в родительском представлении View 'parent_View.addView (subImage)' – Robust

ответ

1

необходимо создать макет в XML-файле

<LinearLayout android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/linearLayout" 
    android:orientation="vertical"> 

</LinearLayout> 

и в Java файл

LinearLayout layout=(LinearLayout)view.findViewById(R.id.linearLayout); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
           android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, 
           android.widget.LinearLayout.LayoutParams.WRAP_CONTENT); 
    imageViews = new ArrayList<ImageView>(); 

     for(int i = 0; i < 3; i++){ 
      for(int j = 0; j < 3; j++){ 
       if(3*i+j != 8) { 
        ImageView subImage = new ImageView(this); 
        subImage.setImageBitmap(pieces.get(3 * i + j));       
        subImage.setVisibility(View.VISIBLE); 
        subImage.setLayoutParams(params); 
        imageViews.add(subImage); 

        layout.addView(subImage); 

       } 
      } 
     } 

ПРИМЕЧАНИЕ: если у вас есть несколько изображений, которые не установленные на затем сначала создайте прокрутку и в этом случае линейный макет

2

Вы должны добавить представление в свой объект макета, как показано ниже.

layout_object.addView(subImage);

и, наконец, вы должны установить, какой вид вы хотите отобразить как

setContentView(layout_object);

надежды этот ответ полезен для вас.

1

вы создали все изображения, но вам нужна макет для отображения этих изображений. позволяет сказать LinearLayout, поэтому сначала необходимо создать макет в файле XML,

<LinearLayout android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/myLinearLayout" 
    android:orientation="vertical"> 

</LinearLayout> 

Теперь добавьте изображения внутри этой схемы.

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.myLinearLayout); 
imageViews = new ArrayList<ImageView>(); 
    for(int i = 0; i < 3; i++){ 
     for(int j = 0; j < 3; j++){ 
      if(3*i+j != 8) { 
       ImageView subImage = new ImageView(this); 
       subImage.setImageBitmap(pieces.get(3 * i + j)); 
       LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(100, 100); 
       subImage.setLayoutParams(lp); 
       subImage.setX(i * 100f); 
       subImage.setY(j * 100f); 
       subImage.setVisibility(View.VISIBLE); 
       imageViews.add(subImage); 

      } 
     } 
    } 

for(int i=0; i< imageViews.size(); i++){ // iterating through the arraylist and adding the images to the linearlayout 
    mylinearLayout.addView(imageViews.get(0)); 
} 
0

вы имея ArrayList объектов ImageView .. просто перебирать этот список массива и добавить к основной компоновкой родителя

предположим, что ваш основной макет RelativeLayout

<LinearLayout android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/mainlayout"> 
</LinearLayout> 

сохранить этот объект в java-код

RelativeLayout rl=(RelativeLayout)findViewById(R.id.mainlayout); 
//now iterate the arraylist of imageviews 
for(ImageView iv:imageViews) 
{ 
    rl.addView(iv); 
} 
Смежные вопросы