2017-08-15 5 views
1

Je suis actuellement en utilisant un sélecteur de liste pour ma listview et l'a créé en utilisant layer-list. Ceci est mon code xml:Android drawable apparaît étiré pour API <23 et correctement pour API 23 et au-dessus

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/menu_arrow" 
    android:width="18dp" 
    android:height="36dp" 
    android:top="5dp"/> 

<item android:top="0dp" android:left="5dp" android:bottom="0dp" android:right="0dp"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@android:color/transparent"/> 
    </shape> 
</item> 

Quand je construis l'application, il apparaît bien sur api 23 et au-dessus.

api 23

Mais pour api 22 et au-dessous, il ressemble à ceci:

api 22

Je suis tombé sur ce poste Shape drawable in layer-list rendered incorrectly for APIs below 23 et compris que les attributs largeur et le travail en hauteur que pour api 23 et au dessus. Donc, j'ai ajouté la largeur et la hauteur à l'intérieur de la balise de taille comme ceci:

<item android:drawable="@drawable/menu_arrow" 
    android:top="5dp"> 
    <size android:height="36dp" android:width="18dp"/> 
    </item> 

Mais l'image semble toujours étirée. Quel attribut est nécessaire pour api 22 et ci-dessous pour rendre l'aspect dessinable uniforme pour toutes les versions?

+0

vous pouvez créer drawable, drawable-v21 et drawable-v23 et éditer pour chaque type –

+0

ou se référer: https://stackoverflow.com/questions/35083002/android-item-size-in-layer-list/38608066# 38608066 –

+0

J'ai déjà le fichier xml pour chaque type, les codes pour l'API 22 est à l'intérieur du dossier v21 – nexus

Répondre

1

j'ai réussi à le résoudre de la manière suivante:

<item android:drawable ="@drawable/menu_arrow" 
    android:right="285dp" 
    android:top="5dp" 
    android:bottom="10dp"/> 

Je suppose que pour api < 23 nous devons redimensionner le calque supérieur à l'aide, à droite, les valeurs inférieures et api> 23 nous pouvons utiliser la largeur et la taille.