2015-04-19 3 views
1

Я новичок в разработке Android. Я пытаюсь выполнить итерацию через Hashmap, чтобы создать вертикальные линейные макеты, которые всегда включают один ImageView и одну кнопку. Это прекрасно работает. Чтобы выделить доступное пространство, равное всем линейным макетам, я пытаюсь использовать атрибут веса. Это также работает. Но, к сожалению, он создает огромный зазор между изображением и кнопкой. Я не понимаю, почему. Есть идеи?android layout weight создает промежуток

Iterator it = map.entrySet().iterator(); 
     while (it.hasNext()) { 
      Map.Entry pair = (Map.Entry)it.next(); 
      if(count%3==0){ 
       if(linear!=null){ 
        layout.addView(linear); 
       } 
       linear=new LinearLayout(getApplicationContext()); 
       linear.setOrientation(LinearLayout.HORIZONTAL); 
       linear.setLayoutParams(layoutParams); 
      } 
      LinearLayout linear2=new LinearLayout(getApplicationContext()); 
      LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(0, 
        LinearLayout.LayoutParams.WRAP_CONTENT, 1f); 
      lp1.setMargins(15, 0, 15, 0); 
      linear2.setLayoutParams(lp1); 
      linear2.setOrientation(LinearLayout.VERTICAL); 
      final String finalstring=(String)pair.getKey(); 
      Button button = new Button(getApplicationContext()); 
      button.setText((String)pair.getKey()); 
      button.setClickable(false); 
      button.setBackgroundColor(getResources().getColor(R.color.friking_blue)); 

      ImageView image = new ImageView(getApplicationContext()); 
      new DownloadImageTask(image).execute((String)pair.getValue()); 

      linear2.addView(image); 
      linear2.addView(button); 
      linear.addView(linear2); 
      linear2.setOnClickListener(new View.OnClickListener(){ 
       public void onClick(View v){ 
        Intent intent = new Intent(getApplicationContext(), Mycontacts.class); 
        intent.putExtra("category", finalstring); 
        startActivity(intent); 
       } 
      }); 
      count++; 
      it.remove(); // avoids a ConcurrentModificationException 
     } 

Вот изображение:

Image of the problem

Спасибо за любую помощь!

+0

Вы должны изучить ['GridView'] (http://developer.android.com/guide/topics/ui/layout/gridview.html). – VenomVendor

ответ

0

Необходимо указать scaleType в вашем ImageView. После создания ImageView, звоните:

image.setScaleType(ImageView.ScaleType.CENTER_CROP); 

или какой-либо другой scaleType так, чтобы он заполнил весь вид.

+0

это то, что я искал. большое спасибо, что вы спасли мои выходные :) – mambo

Смежные вопросы