2013-08-16 138 views
0

我在按钮中添加了一个名为“star”的图像,图片出现了,但它使按钮变大。将图像添加到按钮而不调整大小

<Button 
android:id="@+id/latest_photoB" 
android:layout_height="87dp" 
android:layout_weight="1" 
android:background="#dcdcdc" 
android:drawableTop="@drawable/star" 
android:text="Latest Photos" 
android:textSize="10dp" 
android:textColor="#000000" /> 

我尝试了许多不同的方法,例如使它成为imagebutton

我试过android:background = image,但没有奏效。我如何添加图片并保持相同尺寸?

+0

你想保持它与大小一样吗?如果你设置了背景,那么设置它应该保持这个尺寸的高度和宽度。 – Eluvatar

回答

0

也许你正在寻找android:setAdjustViewBounds = "false"

+0

我希望按钮的大小保持不变,一旦它显示图像就会变大。 –

0

一个按钮的默认背景绘制采用的是所谓的九补丁。它将自己调整为按钮内容的大小。一个按钮是一个特殊的TextView,它可以在其四个边中的每一边都附上可绘制的(复合可绘制的)。文本和复合绘图组成Button的内容,这就是按钮调整大小的原因。

复合可绘制对视图层次结构进行了优化,因为它减少了一个非常常见的场景的视图数量,但它听起来像是您想要一个ImageView + a按钮,其中ImageView以与您按钮时相同的方式响应点击它?

在这种情况下,包裹的按钮布局,内带一个ImageView的,并设置你onClickListener上的布局,而不是按钮

0

摆脱:

android:layout_weight="1" 

而取而代之的是,一个特定的大小为您的按钮:

android:layout_height="87dp" 
android:layout_width="50dp" 

希望这会有所帮助。

1

如果您希望按钮有一个形象的背景,请执行以下操作:

<Button 
    android:id="@+id/latest_photoB" 
    android:layout_height="87dp" 
    android:layout_width="87dp" 
    android:background="@drawable/star" 
    android:text="Latest Photos" 
    android:textSize="10dp" 
    android:textColor="#000000" /> 

如果按钮应该是固定的大小,layout_weight是不需要的。另外,您还没有定义layout_weight属性。我已将其设置为87dp。根据需要更改它。

+0

layout_width =“87dp”没有工作 - 它改变了我的按钮的大小。 –

+0

@DianeWener是否有您想要分配给按钮的大小?您应该使用该尺寸代替'87dp'。 – Vikram

0

如果您不设置按钮的高度和宽度,则Android按钮将包装内容(与图像大小相同)。试试这种方式

<Button 
android:id="@+id/latest_photoB" 
android:layout_height="87dp" 
android:layout_width="87dp" 
android:layout_weight="1" 
android:background="@drawable/star" 
android:text="Latest Photos" 
android:textSize="10dp" 
android:textColor="#000000" />