2016-04-18 5 views
0

У меня есть макет, который вы видите на картинке. Ячейки для каждого ImageView устанавливаются одинаково по ширине и высоте. Масштабный тип изображений - «fitXY». В настоящее время все изображения изменяются в зависимости от размера экрана и часто масштабируются.Максимальный размер изображений:

Я хочу достичь следующих целей: set maxSize - максимальная ширина и высота изображения. Когда ячейки меньше, чем maxSize ImageView ведут себя так же, как с «fitXY», но если ячейки больше, чем maxSize, то изображения не будут масштабироваться дальше. Я не хочу иметь изображения для разных DPI, но для изменения больших значков на лету.

Как я понимаю, должны быть разные значения maxSize для разных размеров экрана и разрешений.

enter image description here

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="4" 
     android:orientation="horizontal" 
     android:background="@drawable/app_bg" 
     android:weightSum="2" 
     android:padding="8dp"> 
     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:orientation="vertical" 
      android:weightSum="2"> 
       <ImageView 
        android:layout_width="match_parent" 
        android:layout_height="0dp" 
        android:layout_weight="1" 
        android:src="@drawable/icon_www" 
        android:scaleType="fitXY" 
        android:padding="40dp"/> 
       <ImageView 
        android:layout_width="match_parent" 
        android:layout_height="0dp" 
        android:src="@drawable/icon_fb" 
        android:layout_weight="1" 
        android:padding="40dp" 
        android:scaleType="fitXY"/> 
     </LinearLayout> 
     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:orientation="vertical" 
      android:weightSum="2"> 
       <ImageView 
        android:layout_width="match_parent" 
        android:layout_height="0dp" 
        android:src="@drawable/icon_twitter" 
        android:layout_weight="1" 
        android:scaleType="fitXY" 
        android:padding="40dp"/> 

       <ImageView 
        android:layout_width="match_parent" 
        android:layout_height="0dp" 
        android:src="@drawable/icon_youtube" 
        android:layout_weight="1" 
        android:scaleType="fitXY" 
        android:padding="40dp"/> 


     </LinearLayout> 
    </LinearLayout> 
+0

Пожалуйста, разместите свой xml здесь. И да, попробуйте добавить размеры динамически для разных размеров и dps экранов. –

+0

добавил xml, я могу установить максимальные размеры для ImageViews через xml по некоторым причинам, даже если layout_width и layout_height установлены на wrap_content – bvk256

+0

Вы пробовали Android: maxWidth? –

ответ

2

добавить android:adjustViewBounds="true" и изменения 'андроида: scaleType = "центр"' в android:scaleType="fitCenter"

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:src="@drawable/icon_www" 
    android:scaleType="fitCenter" 
    android:padding="40dp" 
    android:adjustViewBounds="true"/> 

EDIT ваш android:maxHeight не работает, потому что, давая layout_height, как 0dp и layout_weight как 1, вы указываете определенное значение высоты для представления. max_height и max_width работает только в том случае, если у вас нет определенного значения высоты и ширины для представления. Поставьте wrap_content в качестве layout_height и удалите layout_weight. Аналогично, указав layout_width как match_parent, вы определяете конкретное значение высоты представления. замените match_parent на wrap_content, и он будет работать.

+0

, чем 'android: adjustViewBounds =" true "' будет делать –

+0

, проблема в том, что я не могу установить максимальный размер изображений – bvk256

+0

, что бы вы ни дали 'android: layout_width' и' android: layout_height' - максимальная ширина и максимальная высота для этого вида –