我有一个简单的布局:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/button_background"
android:text="Button"
android:gravity="center"
android:textColor="#FFFFFF" />
<Button
android:id="@+id/button6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button" />
</LinearLayout>
这是输出:
但是我希望带背景的按钮保持与没有图像作为背景(右图)相同的尺寸。基本上,我想&#34;放置&#34;图像上的按钮位于按钮背景上,但按钮没有调整大小以适应整个背景。
我试过android:scaleType =&#34; centerCrop&#34;在按钮上但它没有改变任何东西。感谢任何帮助,谢谢
编辑按钮的大小需要wrap_content,因为文本是动态的
答案 0 :(得分:1)
按钮宽度和高度设置为 wrap_content 。在这种情况下,背景图像也是内容。 只需将宽度和高度更改为您想要的值:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/button5"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_weight="1"
android:background="@drawable/button_background"
android:text="Button"
android:gravity="center"
android:textColor="#FFFFFF" />
<Button
android:id="@+id/button6"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_weight="1"
android:text="Button" />
</LinearLayout>
如果您希望所有按钮的大小相同,请考虑创建 dimen 值:
<强>扪强>
<resources>
<dimen name="button_width">100dp</dimen>
<dimen name="button_height">50dp</dimen>
</resources>
<强>布局强>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/button5"
android:layout_width="@dimen/button_with"
android:layout_height="@dimen/button_height"
android:layout_weight="1"
android:background="@drawable/button_background"
android:text="Button"
android:gravity="center"
android:textColor="#FFFFFF" />
<Button
android:id="@+id/button6"
android:layout_width="@dimen/button_with"
android:layout_height="@dimen/button_height"
android:layout_weight="1"
android:text="Button" />
</LinearLayout>
另外,请考虑使用 ImageButton 。
修改强>
试试这个:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/your_background"
android:layout_alignStart="@+id/buttonId"
android:layout_alignEnd="@+id/buttonId"
android:layout_alignTop="@+id/buttonId"
android:layout_alignBottom="@+id/buttonId"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/buttonId"/>
</RelativeLayout>
此外,将 scaleType 添加到ImageView以使其居中,拉伸,无论如何......
android:scaleType="center"
编辑2
为按钮添加填充对我有用:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_settings"
android:layout_alignStart="@+id/buttonId"
android:layout_alignEnd="@+id/buttonId"
android:layout_alignTop="@+id/buttonId"
android:layout_alignBottom="@+id/buttonId"
android:scaleType="center"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:text="This is a button with a very long text that may take up multiple lines and stuff"
android:id="@+id/buttonId"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_settings"
android:layout_alignStart="@+id/buttonId2"
android:layout_alignEnd="@+id/buttonId2"
android:layout_alignTop="@+id/buttonId2"
android:layout_alignBottom="@+id/buttonId2"
android:scaleType="center"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a button with a very long text that may take up multiple lines and stuff"
android:id="@+id/buttonId2"/>
</RelativeLayout>
注意:您无法在屏幕截图中看到paddingStart和paddingEnd,但它可以正常工作。
答案 1 :(得分:0)
为了扩展九补丁建议,Android支持使用九补丁图像将按钮/视图组的图像缩放到任意大小的功能。需要注意的是,图像必须是符合九个补丁要求的图像 - 一般来说,角落是恒定的图像,中间/边缘必须能够缩放到任何尺寸。例如,如果您的图片是照片,则无法使用。大多数九贴片图像具有纯色中心和“简单”边缘。
第一步是在drawable
文件夹中创建一个引用九补丁图像的九补丁绘图。九个补丁图像的文件名应该类似于* .9.png。
<?xml version="1.0" encoding="utf-8"?>
<nine-patch
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/button_image" />
完成此操作后,您可以将background
属性添加到Button
,并且应该与内容无缝扩展(下面的background
属性应该引用{{1}您在上面创建的XML资源。
<nine-patch>
我会注意到你的图像,特别是水平线,看起来像九补丁解决方案的不好选择,但如果你对使用的图像灵活,可能值得一看。