120

ベクトルをスケーリングせずに aVectorDrawableで aを使用しようとしています。LayerList例えば:

<layer-list>
    <item android:drawable="@color/grid_item_activated"/>
    <item android:gravity="center" android:drawable="@drawable/ic_check_white_48dp"/>
</layer-list>

ic_check_white_48dp次のように定義されたドローアブルID:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="48dp"
        android:height="48dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#FFFFFFFF"
        android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>
</vector>

望ましい効果は、チェック アイコンをスケーリングせずにレイヤー ドローアブルの中央に配置することです。問題は、上記のレイヤーリストにより、チェックアイコンがレイヤーサイズに合わせてスケーリングされることです。

密度ごとにベクター ドローアブルを PNG に置き換え、レイヤー リストを次のように変更すると、目的の効果を得ることができます。

<layer-list>
    <item android:drawable="@color/grid_item_activated"/>
    <item>
        <bitmap android:gravity="center" android:src="@drawable/ic_check_white_48dp"/>
    </item>
</layer-list>

を使用してこれを行う方法はありますVectorDrawableか?

4

4 に答える 4

23

同じ問題に苦しんでいます。これを修正し、ドローアブルがスケールアップしないようにする唯一の方法は、ドローアブルのサイズを設定し、重力を使用して整列させることでした。

<layer-list>
    <item android:drawable="@color/grid_item_activated"/>
     <item
        android:gravity="center"
        android:width="48dp"
        android:height="48dp"
        android:drawable="@drawable/ic_check_white_48dp"/>
</layer-list>

それが役に立てば幸い!

于 2016-08-30T16:23:37.533 に答える