2016-05-15 165 views
-1

在我的佈局中,我有一個帶有背景圖片的按鈕。當我將寬度和高度都設置爲wrap_content時,背景被拉伸。但是當我使用dp的相同值來設置寬度和高度時,我會得到預期的結果。爲什麼會發生?按鈕背景圖片拉伸

圖片原本是圓形的。

  <Button 
      android:id="@+id/captureButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" 
      android:background="@drawable/custom_capture" /> 

當設置爲包裹爲高度內容和寬度

enter image description here

當設置爲80dp爲高度和寬度

enter image description here

+0

你能否解釋一下嗎?我設定的背景是隻有紅圈。我正在使用它作爲我的相機的快門按鈕 –

+0

我把我的評論變成了答案。試一試。 –

回答

0

由於background是指填充容器。
但是,由於Button繼承自TextView,因此可以使用複合可繪製

事情是這樣:

<Button 
    android:id="@+id/captureButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:drawableLeft="@drawable/custom_capture" 
/> 

備選:使用一個TextView

<TextView 
    android:id="@+id/captureButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:drawableLeft="@drawable/custom_capture" 
    android:clickable="true" 
/> 
+0

是的,它現在可以工作,但它現在具有矩形形狀,就像通常的按鈕一樣。如何刪除它? –

+0

您可以設置自定義樣式。或者,您可以使用TextView而不是Button。並將它的'android:clickable'屬性設置爲'true' –

+0

好吧,試試吧 –

1

使用上述按鈕的xml佈局,您將得到一個帶有空文本(「」)的Button,您應該注意到Button的左側和右側默認填充與頂部和底部不同。 因此,帶空文本的按鈕將具有矩形形狀,而不是正方形,所以背景將被拉伸。

在修復寬度和高度的情況下,它會確保按鈕總是您想要的大小(方形),所以背景將完美顯示。

+0

我明白了。我怎樣才能完美地顯示它?我不想設置dp,因爲我想使用不同版本的背景來支持多個屏幕 –

+0

您可以在dimens.xml中創建維度,就像http://developer.android.com/intl/vi/samples /CustomNotifications/res/values-sw720dp-land/dimens.html。然後通過@dimens/captureSize爲寬度和高度使用此值。隨着維度。xml,你可以指定多個屏幕的不同大小:) – Ken

+0

另一種解決方案,你可以嘗試使用ImageButton,它比你更適合那麼Button。但你也應該定義多個屏幕的尺寸:) – Ken

0

可以使用9patch或設置一個固定的寬度和高度爲你的按鈕