Настройка размера ImageButton на Android

Есть какой-либо способ сделать это? Я попытался заполнить изображение и установить ширину / высоту представления, но, похоже, не работает. Вот пример:

<ImageButton android:id="@+id/search" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/search_small" android:paddingTop="4sp" android:paddingBottom="4sp" android:paddingLeft="6sp" android:paddingRight="6sp" android:layout_marginRight="10sp" android:layout_marginTop="6sp" android:layout_marginBottom="6sp" android:layout_alignParentRight="true" /> 

Я хочу, чтобы кнопка была шире, чем высокая, но она выходит наоборот.

Solutions Collecting From Web of "Настройка размера ImageButton на Android"

Просто была игра, чтобы попытаться понять вашу проблему.

Кажется, ImageButton представляет собой составной вид, который имеет несколько предварительно заданных значений. Например, какой-то марж, который вы не можете переопределить с помощью XML. Если вы не можете изменить свое изображение в соответствии с тем, что хотите, тогда вам лучше создать свой собственный составной вид.

Вот мой пример сложного представления, которое вы можете сделать сами:

  <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:id="@+id/saveSearchButton" android:layout_width="50dp" android:layout_height="50dp" /> <ImageView android:layout_width="45dp" android:layout_height="45dp" android:scaleType="fitXY" android:src="@drawable/ic_menu_save" android:layout_gravity="center"/> </FrameLayout> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:id="@+id/clearSearchButton" android:layout_width="50dp" android:layout_height="50dp" /> <ImageView android:layout_width="45dp" android:layout_height="45dp" android:scaleType="fitXY" android:src="@drawable/ic_menu_close_clear_cancel" android:layout_gravity="center"/> </FrameLayout> 

И исходные кнопки:

  <ImageButton android:id="@+id/imageButton1" android:src="@drawable/ic_menu_save" android:layout_height="45dp" android:layout_width="45dp"/> <ImageButton android:id="@+id/imageButton2" android:src="@drawable/ic_menu_close_clear_cancel" android:layout_height="45dp" android:layout_width="45dp"/> 

Здесь мы можем увидеть пользовательский композит image / button, а затем сборку в ImageButton как часть SDK:

пример

Установите android:background вместо android:src чтобы установить изображение на кнопке. Это отрегулирует изображение до размера вашей кнопки. Затем отрегулируйте прокладку после.

Вы не должны использовать sp как размерный размер – dp следует использовать, так как это поможет вашему масштабу просмотра напрямую с различной плотностью экрана и разрешением. См. Здесь размеры.

padding будет толкать другие элементы от вашей границы вида. margin будет подталкивать содержимое вашего представления внутрь от вашей границы (т. Е. Выкапывает доступное пространство для вашего изображения). Граница определяется высотой и шириной. Без дополнительной информации я бы предположил, что вас путают ваши поля – удалите их и экспериментируйте.

Также полезно для вас: android:scaleType="fitXY" делает растягивание изображения соответствующим размерам X и Y, доступным для него. Это поможет вам увидеть холст, доступный вашему изображению. Как только вы почувствуете, что область достаточно велика для правильного масштабирования изображения, измените тип шкалы на centerInside. См. Здесь для всех типов шкалы.

Я использую minWidth и minHeight сочетании с fitXY типа fitXY и обертыванием его содержимого для модуляции формы моей кнопки.

Вы хотите сделать свою кнопку «шире», например, распечатав кнопку 200X100 из квадратного значка, вы можете выложить ее так:

 <ImageButton android:id="@+id/fooButton" android:src="@drawable/play_button" android:backgroundTint="#00000000" android:minWidth="200" android:minHeight="100" android:scaleType="fitXY" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="playStuff" /> 

Введите описание изображения здесь

Можете ли вы объяснить свой вопрос более широко, чтобы мы могли более понять.

Согласно моему пониманию, вы хотите установить высоту / ширину ImageButton. Но это не работает? Я хочу спросить вас, что, если вы пишете какую-либо конкретную высоту / ширину, то и она не работает?

Я скопировал ваш код в своих файлах, и я изменил высоту / ширину вручную, тогда он будет работать.

Пожалуйста, объясните свой вопрос.

Благодарю.

Я закончил макет после ответа Грэма. Четыре «imageButton» фиксируют нижнюю, такую ​​же ширину, изменяемый размер изображения. благодаря!

  <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:background="@color/#000" android:weightSum="100" > <FrameLayout android:id="@+id/flBottom1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="25" > <Button android:id="@+id/ibBottom1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/detail_tab_bg_selector"/> <ImageView android:layout_width="32dp" android:layout_height="32dp" android:scaleType="fitXY" android:src="@drawable/icon_home_48_48" android:layout_gravity="center_horizontal" android:layout_marginTop="5dp" /> <TextView android:id="@+id/tvBottom1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center_horizontal" android:layout_marginTop="35dp" android:text="@string/bailty_text_home" style="@style/bailtyTextBottom" /> </FrameLayout> <FrameLayout android:id="@+id/flBottom2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="25" > <Button android:id="@+id/ibBottom2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/detail_tab_bg_selector"/> <ImageView android:layout_width="32dp" android:layout_height="32dp" android:scaleType="fitXY" android:src="@drawable/icon_compose_48_48" android:layout_gravity="center_horizontal" /> <TextView android:id="@+id/tvBottom2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center_horizontal" android:layout_marginTop="35dp" android:text="@string/bailty_text_comment" style="@style/bailtyTextBottom" /> </FrameLayout> <FrameLayout android:id="@+id/flBottom3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="25" > <Button android:id="@+id/ibBottom3" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/detail_tab_bg_selector"/> <ImageView android:layout_width="32dp" android:layout_height="32dp" android:scaleType="fitXY" android:src="@drawable/icon_search_48_48" android:layout_gravity="center_horizontal" /> <TextView android:id="@+id/tvBottom3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center_horizontal" android:layout_marginTop="35dp" android:text="@string/bailty_text_search" style="@style/bailtyTextBottom" /> </FrameLayout> <FrameLayout android:id="@+id/flBottom4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="25" > <Button android:id="@+id/ibBottom4" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/detail_tab_bg_selector"/> <ImageView android:layout_width="32dp" android:layout_height="32dp" android:scaleType="fitXY" android:src="@drawable/icon_barcode_48_48" android:layout_gravity="center_horizontal" /> <TextView android:id="@+id/tvBottom4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center_horizontal" android:layout_marginTop="35dp" android:text="@string/bailty_text_scan_again" style="@style/bailtyTextBottom" /> </FrameLayout> </LinearLayout>