1

这是正在发生的事情:

gt 2.3.6 中的按钮水平调整大小

这是源图像:

源图像

这是 xml 布局的一部分:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/background_headers"
    android:orientation="horizontal" >

    <AutoCompleteTextView
        android:id="@+id/etNewItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:completionThreshold="2"
        android:dropDownHeight="wrap_content"
        android:dropDownWidth="wrap_content"
        android:hint="@string/et_newitemhint"
        android:inputType="text|textCapSentences"
        android:layout_centerVertical="true"
        style="@style/DialogEditText"
        android:layout_marginRight="10dp"
        android:singleLine="true" />


    <Button
        android:id="@+id/btnAddNew"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:background="@drawable/btn_add"
        android:layout_centerVertical="true" />
</RelativeLayout>

这是按钮的 Selector xml:

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

为什么这个按钮在 4.xx 中水平调整大小?源图形确实曾经是一个 9-patch,但它做了完全相同的事情,所以我将其更改为普通 png,但没有结果。

奇怪的是,这是唯一表现出这种行为的图形。我在某处的操作栏中有它:同样的事情;我也有它在一个对话框中:同样的事情。

我的 2.2.2 和 2.3.6 测试设备按原样显示按钮,但我的任何 4.xx 测试设备都显示拉长的按钮。

4

2 回答 2

1

首先,制作这些:

res/drawable/button_add_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/btn_add_normal"
    android:tileMode="disabled" 
    android:gravity="top" >
</bitmap>

res/drawable/button_add_pressed.xml

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/btn_add_pressed"
    android:tileMode="disabled" 
    android:gravity="top" >
</bitmap>

然后将其用作选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
     <item android:state_focused="true" 
           android:drawable="@drawable/button_add_pressed"/>
     <item android:state_pressed="true" 
           android:drawable="@drawable/button_add_pressed"/>
     <item android:drawable="@drawable/button_add_normal"/>
</selector>
于 2013-07-09T21:39:40.717 回答
0

我没能在我的设备上重现这个。但是,我仍然有一个解决方案:您可以使用这样的精确尺寸:

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

这样,图像在每台设备上看起来都应该相同。

于 2013-07-09T21:41:11.777 回答