有没有办法做到这一点?我已经尝试填充图像并设置视图的宽度/高度,但似乎都不起作用.这是一个例子:
<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"
/>
Run Code Online (Sandbox Code Playgroud)
我希望按钮比它高而宽,但它反过来会出现.
Gra*_*eme 27
只是玩了一个尝试来理解你的问题.
似乎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>
Run Code Online (Sandbox Code Playgroud)
和原始按钮:
<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"/>
Run Code Online (Sandbox Code Playgroud)
在这里,我们可以看到自定义图像/按钮复合,然后ImageButton作为SDK的一部分进行内置:

小智 15
设置android:background而不是android:src在按钮上设置图像.这会将图像调整为按钮的大小.然后调整填充.
我使用minWidth和minHeight属性,结合fitXY比例类型并包装其内容以调整按钮的形状。
<ImageButton
android:id="@+id/fooButton"
android:background="@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"
/>
Run Code Online (Sandbox Code Playgroud)