3

我有LinearLayout两个EditText后代(不是直系子女)。我呼吁每个人在每个sEditText.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.xyz,0)的右侧放置一个可绘制对象(相同的可绘制对象) 。EditText这两个编辑文本是相同的,除了它们在ListView. 但是,EditText添加可绘制对象后,第一个可绘制对象的大小变得大于第二个。具体来说,第一个EditText调整大小以适应可绘制对象的固有大小,而第二个EditText则没有(尽管它确实增长了一些)。

为什么两个相同的可绘制对象在两个几乎相同的视图中显示不同?

另外,我可以通过弄清楚如何使可绘制对象不强制EditText to resize. 如您所见,我已按照https://developer.android.com/guide/topics/resources/drawable-resource.html#LayerList关于制作背景比例的说明进行操作,但这似乎并没有诡计。

编码:

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:paddingLeft="10dp"
    android:paddingRight="10dp">

    <TextView 
        style="@style/fieldLabel"
        android:text="phone number"/>
    <EditText
        android:id="@+id/contactPhoneField" 
        android:inputType="phone"
        android:layout_width="fill_parent"
        style="@style/editableField"/>

</LinearLayout>

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:paddingLeft="10dp"
    android:paddingRight="10dp">

    <TextView 
        style="@style/fieldLabel"
        android:text="e-mail address"/>
    <EditText
        android:id="@+id/contactEmailField" 
        android:inputType="textEmailAddress"
        android:layout_width="fill_parent"
        style="@style/editableField"/>

</LinearLayout>

可绘制的:

    <?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>

        <shape android:shape="rectangle">

            <gradient 
                android:startColor="#FFD060" 
                android:endColor="#FFBB33"
                android:angle="270"/>
            <padding android:left="5dp" android:top="5dp"
                android:right="5dp" android:bottom="5dp" />
            <corners android:radius="5dp" />
            <stroke android:width="2dp" android:color="#FF8800"/>
        </shape>

    </item>
    <item android:drawable="@drawable/warn"/><!-- a 35x35 px png which is taller than the native height of an EditText-->
</layer-list>

然后在某个时候我打电话给:

contactPhoneField.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.error_background, 0);
contactEmailField.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.error_background, 0);

此外,我以后每次调用EditText.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.xyz,0)(第一次调用它之后)都会导致 first的大小在匹配第二个和匹配可绘制大小EditText之间切换!EditText

4

0 回答 0