2015-02-23 3 views
0

Я знаю, что этот вопрос задавали много раз раньше, но все ответы не помогают мне или, кажется, противоречат друг другу.Как растянуть Android ImageView до ширины родителя?

  • This one Предлагает мне программно установить ширину ImageView.
  • This one и this one предлагают сделать это, переопределив метод onMeasure() на ImageView в подклассе.
  • This one предполагает, что это может быть сделано только с быстрой фрагмент кода:

.

ImageView imageView=new ImageView(context); 
imageView.setAdjustViewBounds(true); 
imageView.setImageBitmap(bitmap); 
imageView.setMaxHeight(maxHeight); 
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
layout.addView(imageView); 

Мысль я попробовал это (я новичок в Android, извините), и это не похоже на работу для меня. Моя цель состоит в том, чтобы программно построить следующее:

<horizontal layout> 
    <container width_weight=X> 
     <image A fills parent width/> 
    </container> 
    <container width_weight=Y> 
     <image B fills parent width/> 
    </container> 
    <container width_weight=Z> 
     <image C fills parent width/> 
    </container> 
</horizontal layout> 

где X, Y и Z - разные положительные целые числа. Может ли кто-нибудь помочь мне разобраться во всей этой информации?

+0

Я не хочу писать XML-макет - я хочу сделать это программно. –

+0

Почему вы не хотите писать XML-макет? Вы будете писать и поддерживать как минимум 5-кратный код, чтобы сделать то же самое, не говоря уже о том, что нельзя использовать какие-либо инструменты для [предоставления альтернативных ресурсов] (http://developer.android.com/guide/ темы/ресурсы/предоставление-resources.html # AlternativeResources). – ianhanniballake

ответ

1

Установите ширину и высоту через LayoutParams для вашего ImageView:

ImageView imageView = new ImageView(this); 
int mp = LinearLayout.LayoutParams.MATCH_PARENT; 
imageView.setLayoutParams(new LinearLayout.LayoutParams(mp, mp)); 
layout.addView(imageView); 

Это учитывая, что ваш контейнер является LinearLayout.

+0

Hrm ... Это не работает. Это заставляет Image A занять весь экран (а не уважать вес = X) и, что еще хуже, он фактически не растягивает изображение по ширине - вместо этого он уже подходит по высоте, поэтому он останавливает растяжение. Я больше не могу видеть изображение B или C. –

+0

@RobertMartin Я думаю, вы должны разместить свой макет вместо макетов с неясными атрибутами, такими как горизонтальный макет и width_weight. – Simas

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