2016-05-15 3 views
-1

В моем макете у меня есть кнопка с фоновым изображением. Когда я устанавливаю ширину и высоту как wrap_content, фон растягивается. Но когда я использую то же значение для dp, чтобы установить ширину и высоту, я получаю ожидаемый результат. Почему это происходит?Фоновое изображение для кнопки растягивается

Изображение изначально круг.

  <Button 
      android:id="@+id/captureButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" 
      android:background="@drawable/custom_capture" /> 

Когда установлено, чтобы обернуть контент для высоты и ширины

enter image description here

При установке на 80dp по высоте и ширине

enter image description here

+0

Вы можете уточнить это? И фон, который я установил, это только красный круг. Я использую его как кнопку спуска затвора для своей камеры. –

+0

Я передал свой комментарий в ответ. Попробуйте. –

ответ

0

Поскольку background предназначена для заполнения контейнера ,
Но, поскольку Button наследуется от TextView, вы можете использовать составной номер.

Что-то вроде этого:

<Button 
    android:id="@+id/captureButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:drawableLeft="@drawable/custom_capture" 
/> 

Альтернатива: Использование TextView

<TextView 
    android:id="@+id/captureButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:drawableLeft="@drawable/custom_capture" 
    android:clickable="true" 
/> 
+0

Да, теперь он работает, но теперь он имеет прямоугольную форму, как обычную кнопку. Как его удалить? –

+0

Вы можете установить собственный стиль. Кроме того, вы можете использовать TextView вместо кнопки. И установите его свойство 'android: clickable' в' true' –

+0

Хорошо, давая ему попробовать –

1

С вашей компоновкой xml Button, как указано выше, у вас будет кнопка с пустым текстом (""), вы должны заметить, что отступ по умолчанию слева и справа от кнопки не такой, как сверху и снизу. Следовательно, кнопка с пустым текстом будет иметь форму прямоугольника, а не квадрат, поэтому фон будет растянут.

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

+0

Я вижу. Как я могу отобразить его отлично? Я не хочу устанавливать dp, потому что хочу использовать разные версии фона для поддержки нескольких экранов. –

+0

Вы можете создать измерение в dimens.xml, например http://developer.android.com/intl/vi/samples /CustomNotifications/res/values-sw720dp-land/dimens.html. Затем используйте это значение by @ dimens/captureSize для ширины и высоты. С размерами.xml, вы можете указать разный размер для нескольких экранов :) – Ken

+0

Еще одно решение, вы можете попробовать использовать ImageButton, он более подходит тогда Button в вашем случае. Но вы должны также определить размерность для нескольких экранов :) – Ken

0

вы можете использовать 9patch или установить фиксированную ширину и высоту для кнопки