有没有办法做到这一点?我已经尝试填充图像并设置视图的宽度/高度,但似乎都不起作用。这是一个例子:
<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"
/>
我希望按钮比它高而宽,但它反过来会出现。
答案 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的一部分:
答案 1 :(得分:13)
设置android:background
而不是android:src
来设置按钮上的图像。这会将图像调整为按钮的大小。然后调整填充。
答案 2 :(得分:8)
您不应该使用sp
作为尺寸标注 - 应该使用dp,因为它可以帮助您直接使用不同的屏幕密度和分辨率进行缩放。尺寸为See Here。
padding
会将其他元素推离视图边界。 margin
会将视图内容从您的边界向内推(即会压缩您图片的可用空间)。边界由高度和宽度指定。如果没有更多信息,我猜你会被你的边缘弄糊涂 - 删除它们并进行实验。
对您也很有用:android:scaleType="fitXY"
使图像拉伸以匹配可用的X和Y尺寸。它可以帮助您查看图像可用的画布。一旦您感觉该区域足够大以便正确缩放图像,请将比例类型更改为centerInside。 See Here适用于所有比例类型。
答案 3 :(得分:3)
我使用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"
/>
答案 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>