2016-12-12 3 views
0

У меня есть следующий 9 патч файла в качестве фона в cardview: 9-patch image9-пластырь - Сохранение высоты/шириной отношения нерастяжимой области, когда сворачивает

Для масштабирования изображений на фоне I использовать тип шкалы «fitXY» на моем ImageView:

  <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:src="@drawable/background_player_right_elo" 
      android:scaleType="fitXY"/>       

Он хорошо работает, когда размер карты больше, чем изображение. Тем не менее, в моем случае высоты изображения меньше, чем высота изображения (45dp) и результат искажается: enter image description here

я могу уменьшить размер изображения, но это дает пикселизированное изображение. Я не могу использовать стандартное изображение вместо 9-патча, так как ширина карты зависит от ширины экрана устройства.

Можно ли сохранить соотношение высоты/ширины не растягиваемой области при уменьшении изображения с 9 патчами?

В противном случае существует ли другой способ получения желаемого результата?

Заранее благодарен!

+0

Вы можете означают сохранение центральной зоны нерастянутая и растягивать только то, что вокруг него. –

+0

Центральная область не помечена как растяжимая в файле с 9 патчами (если это то, что вы имеете в виду), но высота карты ниже высоты изображения, поэтому ее необходимо растянуть, чтобы заполнить фон карты , – Zach

+0

'Центральная область не помечена как растяжимая в файле с 9 патчами', которая является ** OK **. 'высота карты ниже высоты изображения', которая ** НЕ ОК **. Вы должны затем предоставить ** меньший ** 9 патч. растяжение гарантируется только в смысле ** расширения **, а не в ** ** **. –

ответ

0

Есть несколько возможных ответов в зависимости от ограничений:

  1. Уменьшение размера 9-патч изображения, если результат не слишком некачественно;
  2. Увеличьте размер CardView, если вы не против;
  3. В противном случае, вы можете использовать два ImageView:

    • Первый с scaleType "fitXY", который будет содержать 9-патч изображение с strechable Фоновые;
    • Второй с scaleType "centerInside", который будет содержать только логотип (который не является 9-патчем) и прозрачным фоном.

Exemple:

 <!-- ImageView for the 9-patch background --> 
     <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:src="@drawable/background" 
      android:scaleType="fitXY"/> 

     <!-- ImageView for the non 9-patch logo --> 
     <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:src="@drawable/logo" 
      android:scaleType="centerInside"/> 
Смежные вопросы