2016-02-13 21 views
1

我想實現這樣的事情:在背景繪製對象與層列表與API V16 Android的問題

enter image description here

我已創建的和上述工作的罰款與API V21,但它的代碼是不是按需要工作。這裏有一小段代碼供您參考。

繪製對象用作背景的的EditText微件ID(drawable_edittext_username.xml):

file: drawable_edittext_username.xml 
<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" 
        android:paddingLeft="44dp" android:paddingStart="44dp"> 
    <item android:drawable="@drawable/drawable_rounded_box"/> 
    <item android:gravity="center_vertical|left"> 
     <selector > 
      <item android:drawable="@drawable/vector_icon_user_focused" 
        android:state_focused="true"/> 
      <item android:drawable="@drawable/vector_icon_user"/> 
     </selector> 
    </item> 
</layer-list> 

file: drawable_rounded_box.xml 
<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" 
       android:paddingLeft="44dp" 
       android:paddingStart="44dp"> 
    <item android:drawable="@drawable/drawable_rounded_box_focused" 
      android:state_focused="true" /> 
    <item android:drawable="@drawable/drawable_rounded_box_normal" /> 
</selector> 

file: drawable_rounded_box_focused.xml 
<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="rectangle"> 
    <stroke 
     android:width="1dp" 
     android:color="@color/colorPrimaryDark" /> 
    <corners android:radius="5dp" /> 
    <padding 
     android:bottom="10dp" 
     android:left="10dp" 
     android:right="10dp" 
     android:top="10dp" /> 
    <solid android:color="@android:color/transparent"/> 
</shape> 

file: drawable_rounded_box_normal.xml* 
<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="rectangle"> 
    <stroke 
     android:width="1dp" 
     android:color="#3f000000" /> 
    <corners android:radius="5dp" /> 
    <padding 
     android:bottom="10dp" 
     android:left="10dp" 
     android:right="10dp" 
     android:top="10dp" /> 
    <solid android:color="@android:color/transparent"/> 
</shape> 

所有圖標是在可拉伸和可拉伸-V21文件夾中可用矢量圖標。

在v16的輸出中,沒有填充並且圖標沒有顏色傳播。下面是圖標代碼:終於在這裏

file: vector_icon_user.xml 
<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:width="24dp" 
    android:height="24dp" 
    android:viewportHeight="24.0" 
    android:viewportWidth="24.0"> 
    <path 
     android:fillColor="#3f000000" 
     android:pathData="M12 14.016q2.531 0 5.273 1.102t2.742 
     2.883v2.016h-16.031v-2.016q0-1.781 2.742-2.883t5.273-1.102zM12 
     12q-1.641 0-2.813-1.172t-1.172-2.813 1.172-2.836 2.813-1.195 
     2.813 1.195 1.172 2.836-1.172 2.813-2.813 1.172z" /> 
</vector> 

file: vector_icon_user_focused.xml 
<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:width="24dp" 
    android:height="24dp" 
    android:viewportHeight="24.0" 
    android:viewportWidth="24.0"> 
    <path 
     android:fillColor="@color/colorAccent" 
     android:pathData="M12 14.016q2.531 0 5.273 1.102t2.742 
     2.883v2.016h-16.031v-2.016q0-1.781 2.742-2.883t5.273-1.102zM12 
     12q-1.641 0-2.813-1.172t-1.172-2.813 1.172-2.836 2.813-1.195 
     2.813 1.195 1.172 2.836-1.172 2.813-2.813 1.172z" /> 
</vector> 

上的API V16輸出:

enter image description here

請幫助我瞭解,我在做什麼錯的,什麼是正確的做法達到相同。

回答

0

這裏是我做過什麼來解決(後備方法),我試圖達到不低於V23的API支持的方式(以上只可能在API V23截至目前)

file: vector_icon_user_focused.xml 
<?xml version="1.0" encoding="utf-8"?> 
<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:width="24dp" 
    android:height="24dp" 
    android:viewportHeight="24.0" 
    android:viewportWidth="24.0"> 
    <path 
     android:fillColor="#ACFDE9" 
     android:pathData="M12 14.016q2.531 0 5.273 1.102t2.742 
     2.883v2.016h-16.031v-2.016q0-1.781 2.742-2.883t5.273-1.102zM12 
     12q-1.641 0-2.813-1.172t-1.172-2.813 1.172-2.836 2.813-1.195 
     2.813 1.195 1.172 2.836-1.172 2.813-2.813 1.172z" /> 
</vector> 

這裏的填充顏色是硬編碼的。

文件drawable_edittext_username.xml已被刪除,文件drawable_rounded_box.xml被用於替代EditText背景可繪製的文件。

文件vector_icon_user.xml更名爲vector_icon_user_normal.xml和新的文件,創建一個包含選擇的vector_icon_user_normal.xmlvector_icon_user_focused.xml喜歡這個名字vector_icon_user.xml賽:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="false" 
      android:drawable="@drawable/vector_icon_user_focused" /> 
    <item android:drawable="@drawable/vector_icon_user_normal" /> 
</selector> 

現在這個新繪製作爲android:drawableLeft="@drawable/vector_icon_user"android:drawablePadding="10dp"

在上述代碼之後,它在所有設備中統一。現在我沒有任何可用於繪製和佈局的v21特定代碼。

如果您有任何問題,請讓我知道。