为什么按钮背景缩放不正确?

时间:2015-11-20 10:40:02

标签: android eclipse button

我将项目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

3 个答案:

答案 0 :(得分:1)

在当前情况下,使用Button代替ImageButton。根据{{​​3}},Button会显示Image (instead of text) pressed clicked,用户可以backgroundButton

如果将图像设置为Image的{​​{1}},则按钮将独立缩放X和Y中的图像,以使图像的宽度和高度与按钮大小完全匹配。这可能会改变图像的纵横比。在你的情况下发生这种情况。

在其他情况下,如果您将background设置为ImageButton scaleType并将centerInside设置为“{{1}}”将统一缩放图像(维护图像的宽高比)这样图像的尺寸(宽度和高度)将等于或小于视图的相应尺寸(减去填充)。

答案 1 :(得分: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>

答案 2 :(得分:0)

我使用ImageButton代替Button,它解决了我的问题。