2015-11-20 35 views
0

我將項目SDK版本從10升級到23,同時將項目從Eclipse移植到Android Studio。爲什麼按鈕背景縮放不正確?

按鈕可繪製xml和png圖像保持不變。然而,按鈕背景看起來縮放不正確。

按鈕狀態列表:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/ok_button_pressed" 
     android:state_pressed="true" /> 
<item android:drawable="@drawable/ok_button_normal" 
     android:state_focused="true" /> 
<item android:drawable="@drawable/ok_button_normal" /> 
</selector> 

對話框佈局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout_root" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:padding="10dp" 
    android:background="#669900" 
    android:gravity="center_horizontal" 
    > 

    <TextView android:id="@+id/alarm_text" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textColor="#FFF" 
       android:textSize="16dp" 
       /> 

    <RelativeLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:gravity="center" 
     android:padding="0dp"> 

    <Button 
     android:id="@+id/ok_alarm_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/ok_button" 
     android:layout_alignParentLeft="true" 
    /> 

    <Button 
     android:id="@+id/cancel_alarm_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/cancel_button" 
     android:layout_alignParentRight="true" 

    /> 
    </RelativeLayout> 

</LinearLayout> 

按鈕背景(按版本): Button background

升級之前: Before upgrade

升級後: After upgrade

+2

使用ImageButton代替Button。按鈕將縮放圖像以適應內部。在ImageButton中,您可以指定ScaleType。 –

+1

設置按鈕的src而不是像這樣的背景:android:src =「@ drawable/ok_button」用你的button替換你的按鈕查看 – Anjali

+1

@Anjali src不可用於Button,它可用於ImageView和ImageButton。 –

回答

0

你可以試試這個辦法,臨時工作好我的圖片

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout_root" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#669900" 
    android:gravity="center_horizontal" 
    android:orientation="vertical" 
    android:padding="10dp"> 

    <TextView 
     android:id="@+id/alarm_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="#FFF" 
     android:textSize="16dp" /> 

    <RelativeLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:gravity="center" 
     android:padding="0dp"> 

     <Button 
      android:id="@+id/ok_alarm_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:background="@drawable/ok_button" 
      android:minHeight="0dp" 
      android:minWidth="0dp" /> 

     <Button 
      android:id="@+id/cancel_alarm_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:background="@drawable/cancel_button" 
      android:minHeight="0dp" 
      android:minWidth="0dp"/> 
    </RelativeLayout> 
</LinearLayout> 
0

我用來代替按鈕的ImageButton,它固定我的問題。

1

在您當前的場景中,使用ImageButton而不是Button。根據ImageButton official document,ImageButton顯示具有Image (instead of text)Button,其可以是用戶的pressedclicked

如果您將圖片設置爲的Button,那麼按鈕會單獨縮放X和Y中的圖片,以使圖片的寬度和高度完全符合按鈕大小。這可能會改變圖像的寬高比。這是發生在你的情況。

在如果爲ImageButton設置Imagebackground並設置scaleType爲「centerInside」將縮放圖像均勻(保持圖像的縱橫比),以使圖像的兩個尺寸(寬度和高度)將等於其他情況下或小於視圖的相應尺寸(減去填充)。