Android drawable выглядит растянутым для API ‹23 и корректно для API 23 и выше.

В настоящее время я использую селектор списка для своего списка и создал его с помощью списка слоев. Это мой xml-код:

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

When i build the app, it appears fine on api 23 and above.

API 23

Но для API 22 и ниже это выглядит так:

API 22

Я наткнулся на этот пост list некорректно отображался для API ниже 23 и понял, что атрибуты width и height работают только для API 23 и выше. Поэтому я добавил ширину и высоту внутри тега размера следующим образом:

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

Но изображение все равно кажется растянутым. Какой атрибут необходим для API 22 и ниже, чтобы рисунок выглядел одинаково для всех версий?


person nexus    schedule 15.08.2017    source источник
comment
вы можете создавать drawable, drawable-v21 и drawable-v23 и редактировать для каждого типа   -  person Nguyễn Trung Hiếu    schedule 15.08.2017
comment
или см.: stackoverflow.com /вопросы/35083002/   -  person Nguyễn Trung Hiếu    schedule 15.08.2017
comment
у меня уже есть файл xml для каждого типа, коды для API 22 находятся внутри папки v21   -  person nexus    schedule 15.08.2017
comment
Можете ли вы опубликовать item_view.xml?   -  person Nguyễn Trung Hiếu    schedule 15.08.2017
comment
Попробуйте установить android:layout_width=wrap_content в item_view списка.   -  person Nguyễn Trung Hiếu    schedule 15.08.2017


Ответы (1)


Мне удалось решить это следующим образом:

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

Я предполагаю, что для API ‹ 23 нам нужно изменить размер чертежа, используя верхние, правые, нижние значения, а для API> 23 мы можем использовать ширину и высоту.

person nexus    schedule 15.08.2017