我有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