2016-04-14 2 views
0

Хей, у меня есть прокрутка hor, которая содержит LinearLayout (ориентация: hor).Fit ImageView to LinearLayout внутри HorizontalScrollView

 <HorizontalScrollView 
     android:id="@+id/adImageScroller" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <LinearLayout 
      android:id="@+id/adImageViewContainer" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:orientation="horizontal" 
      android:layout_gravity="left" 
      android:background="@color/material_blue_grey_950"> 
     </LinearLayout> 

    </HorizontalScrollView> 

Я заполнение этого LinearLayout динамически с ImageViews (все изображения имеют случайные соотношения сторон).

Это метод onCreateView который заполнит LinearLayout:

for (int i = 0; i < reObjectPicUrls.size(); i++) { 
     String url = reObjectPicUrls.get(i).getContent(); 
     ImageView imageView = new ImageView(getActivity()); 

     imageView.setId(i); 
     imageView.setPadding(2, 2, 2, 2); 
     new DownloadImageTask(imageView) 
       .execute(url); 
     imageView.setScaleType(ImageView.ScaleType.FIT_START); //<-- WORKS IN XML 
     imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT)); //<-- WORKS IN XML 
     imageViewContainer.addView(imageView); 
} 

Что мне нужно, но не получаю все изображения масштабируются до высоты серой области (высота horizontalScrollView), сохранив при этом их аспект соотношение.

Изображения все масштабируется вниз с options.inSampleSize = 4;

Проблема в изображении ниже. Изображения не масштабируются, чтобы соответствовать высоте LinearLayout. enter image description here

Я пробовал различный scaleType, но ничего не исправляет. Спасибо за любые советы о том, как это исправить.

+0

попытка дать мин высоту ImageView – Tufan

+0

Хорошая идея, но мне нужно поддерживать несколько размер экрана поэтому я использую layout_weight вместо высоты. Предоставление минимальной высоты поставит вопрос о том, какой должна быть минимальная высота. – KasparTr

+0

минимальная высота может зависеть от размера экрана ... принять ширину высоты устройства и разделить на 2 или 3, что будет поддерживать весь размер экрана – Tufan

ответ

1

И, наконец, потрескался. Не нужно было менять макет xml, но изменил код onCreateView, а добавленный setAdjustViewBounds(true) также использовал тип шкалы FIT_CENTER.

for (int i = 0; i < reObjectPicUrls.size(); i++) { 
     String url = reObjectPicUrls.get(i).getContent(); 
     ImageView imageView = new ImageView(getActivity()); 

     imageView.setId(i); 
     imageView.setPadding(2, 2, 2, 2); 
     new DownloadImageTask(imageView) 
       .execute(url); 
     imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT)); 
     imageView.setAdjustViewBounds(true); <--- THIS DID THE TRICK 
     imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); 

     imageViewContainer.addView(imageView); 
}