在Android中调整ImageButton的大小

Phi*_*ard 19 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"
/>
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在按钮上设置图像.这会将图像调整为按钮的大小.然后调整填充.

  • 比接受的答案更简单、更容易实现。_这_应该是被接受的答案。 (2认同)

Gra*_*eme 9

您不应该使用sp大小尺寸 - 应该使用dp,因为它可以帮助您直接使用不同的屏幕密度和分辨率进行缩放.请参阅此处了解尺寸

padding将推动其他元素远离视图边界.margin将你的视图内容从你的边界向内推(即会压缩你图片的可用空间).边界由高度和宽度指定.没有更多的信息,我猜你会被你的边缘弄糊涂 - 删除它们并进行实验.

对您也很有用:android:scaleType="fitXY"使图像拉伸以匹配可用的X和Y尺寸.它可以帮助您查看图像可用的画布.一旦您感觉该区域足够大以便正确缩放图像,请将比例类型更改为centerInside.有关所有比例类型,请参见此处


Cam*_*mpa 5

我使用minWidthminHeight属性,结合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)

在此处输入图片说明