3

LinearLayout2 つのEditText子孫 (直接の子ではない) があります。それぞれのs のEditText.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.xyz,0)右側にドローアブル (同じドローアブル) を配置するようにそれぞれに要求します。EditText2 つの編集テキストは、 での順序を除いて同一ですListView。ただし、ドローアブルEditTextを追加すると、最初のドローアブルのサイズが2番目よりも大きくなります。具体的には、最初のEditTextサイズはドローアブルの固有のサイズに合わせてサイズ変更されますが、2 番目のサイズは変更されEditTextません (多少大きくなりますが)。

2 つのほぼ同一のビューで同じドローアブルが 2 つ表示されるのはなぜですか?

また、ドローアブルを強制しないようにする方法を考え出すことで、この問題を解決できました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)(初めて呼び出した後) を呼び出すたびに、 firstEditTextのサイズが 2 番目のサイズEditTextとドローアブル サイズの一致の間で切り替わります。

4

0 に答える 0