在Android中调整ImageButton的大小

时间:2011-08-01 13:28:23

标签: 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"
/>

我希望按钮比它高而宽,但它反过来会出现。

6 个答案:

答案 0 :(得分:26)

只是试着去理解你的问题。

似乎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"/>  

在这里,我们可以看到自定义图像/按钮复合,然后在ImageButton中构建,作为SDK的一部分:

Example

答案 1 :(得分:13)

设置android:background而不是android:src来设置按钮上的图像。这会将图像调整为按钮的大小。然后调整填充。

答案 2 :(得分:8)

您不应该使用sp作为尺寸标注 - 应该使用dp,因为它可以帮助您直接使用不同的屏幕密度和分辨率进行缩放。尺寸为See Here

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

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

答案 3 :(得分:3)

我使用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"
        />

enter image description here

答案 4 :(得分:0)

您能否更广泛地解释您的问题,以便我们更加了解。

根据我的理解你想要设置你的ImageButton高度/宽度。但它不起作用呢?我想问你,如果你写任何特定的高度/宽度,那么它也不起作用?

我将代码复制到我的文件中,然后手动更改了高度/宽度,然后就可以了。

请解释一下你的问题。

感谢。

答案 5 :(得分:0)

我按照Graeme的回答完成了布局。四个“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>