2015-12-14 5 views
0

У меня проблема с возможностью рисования в ImageButton.ImageButton изображение масштабируется при добавлении фонового атрибута при использовании типа масштабирования для размещения изображения

Я пытаюсь выровнять белую стрелку (см. Рисунок ниже) в правой части кнопки изображения. Мне удается сделать это, не используя цвет фона, используя scaleType = "fitEnd".

Button - correct arrow, wrong background color

  <ImageButton 
      android:layout_width="250dp" 
      android:layout_height="40dp" 
      android:id="@+id/imageButton7" 
      android:layout_gravity="center_horizontal" 
      android:src="@drawable/arrowUp" 
      android:scaleType="fitEnd" /> 

Однако при попытке добавить цвет фона, стрелка изображение масштабируется по размеру, так что это не выглядит как предназначено (показано на рисунке ниже).

Button - wrong arrow size, correct background color

  <ImageButton 
      android:layout_width="250dp" 
      android:layout_height="40dp" 
      android:id="@+id/imageButton7" 
      android:layout_gravity="center_horizontal" 
      android:src="@drawable/arrowUp" 
      android:scaleType="fitEnd" 
      android:background="#054365" /> 

Есть ли способ, чтобы получить надлежащую стрелку размера & позиционирования в то же время изменяя цвет фона ImageButton при использовании scaleType = «fitEnd», или же я должен использовать другой подход?

+0

Вы пытались создать ресурс, который можно использовать для рисования на основе xml, чтобы использовать его на фоне кнопки вместо прямого использования цвета? – Gonzalo

+0

Я это рассмотрел. Я просто хотел убедиться, что сначала не было способа сделать это программно. –

+0

попробуйте андроид: backgroundTint = "# 054365" вместо андроида: background = "# 054365" –

ответ

1

Попробуйте

android:backgroundTint="#054365" 

вместо

android:background="#054365" 

Чтобы изменить цвет кнопки. Это простой хак.

Для получения дополнительной информации см Material effect on button with background color

0
<ImageButton 
    android:layout_width="match_parent" 
    android:layout_height="100dp" 
    android:src="Your image path" 
    android:scaleType="fitEnd" 
    android:backgroundTint="#FFFFFF"/> 

атрибут "backgroundTint" будет работать уровень API 21 и выше. Если ниже уровня API 21 приложение просто игнорирует атрибут, и это не ошибка.

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

  • Нет связанных вопросов^_^