установить элемент списка слоев из SVG

3641 просмотра

3 ответа

У меня интересный вопрос.

<layer-list>
        <item>
            <shape android:shape="oval">
                <size android:width="@dimen/cb_shape_size" android:height="@dimen/cb_shape_size"/>
                <solid android:color="@color/cb_unchecked_solid"/>
                <stroke android:width="@dimen/cb_shape_stroke"
                        android:color="@color/cb_checked_stroke"/>
            </shape>
        </item>
        <item android:drawable="@drawable/main_cb_gps_off"
              android:gravity="center"/>
    </layer-list>

Main_cb_gps_off является SVG - файл. Предварительный просмотр нравится в Android Studio: введите описание изображения здесь, но представление нравится, когда я запускаю проект в своем телефоне (Android4.4.2): введите описание изображения здесь. И когда я запускаю проект в телефоне Android6.0, просмотр такой же, как и предварительный просмотр Android Studio. Тогда же я обнаружил, что:

<layer-list>
            <item android:drawable="@drawable/main_cb_gps_off"
                  android:gravity="center"/>
        </layer-list>

Этот код работает в Android4.4.2, размер файла SVG нормальный. Так что я не знаю, почему siez из svg файла становится больше, когда в «layer-list» есть два элемента. Я хочу знать. Любое решение?

Автор: DNwalter Источник Размещён: 08.11.2019 11:31

Ответы (3)


2 плюса

Если вы используете drawableв layer-list, он будет отрегулирован в соответствии с видом это в.

Из документации:

По умолчанию все рисуемые элементы масштабируются по размеру вмещающего просмотра. Таким образом, размещение ваших изображений в списке слоев в разных позициях может увеличить размер представления и масштабировать некоторые изображения в зависимости от ситуации.

Чтобы избежать масштабирования, вы должны использовать bitmap:

Чтобы избежать масштабирования элементов в списке, используйте bitmapэлемент внутри itemэлемента, чтобы указать объект рисования и задать гравитацию для чего-то, что не масштабируется, например, «центр».

От: https://developer.android.com/guide/topics/resources/drawable-resource#LayerList

Автор: lenooh Размещён: 10.05.2018 10:29

1 плюс

Вы можете установить размер внутри вашего SVG XML-файла. Если вы объявите его размер 100dpдля ширины и высоты, список слоев будет использовать эти значения для рисования вашего значка.

Если вам нужно увеличить или уменьшить размер, сделайте это внутри вашего XML-файла.

Автор: Diego Ramírez Vásquez Размещён: 30.08.2016 11:18

0 плюса

У меня была та же проблема, и я использовал два отдельных ImageView <FrameLayout>сandroid:layout_gravity="center"

Автор: Dmitry Размещён: 12.04.2017 04:59
Вопросы из категории :
32x32