2016-10-27 14 views
1

私はスプラッシュスクリーンのロゴとして使用するために、いずれかの側にいくつかのパディング付きの描画可能なイメージを中心にしようとしています。問題は、それが画面全体に広がっているか、またはgravityを使用している場合はすべてのパディングを無視することです。レイヤーリストアンドロイドの中でドロアブルをどのようにスケールして中心に置くのですか?

<?xml version="1.0" encoding="utf-8"?> 

<item 
    android:drawable="@color/grey_3"/> 

<item android:gravity="top|center_horizontal|center_vertical" android:drawable="@drawable/zc_logo_r" 
     android:top="100dp" 
     android:left="200dp" 
     android:right="200dp" 
     android:layout_margin="100dp" 
    > 
</item> 

私は同じ結果で、ビットマップ、android:gravity="fill_horizontal"およびSO上の他のさまざまな提案を使用してみました。

xmlで画像の拡大縮小と中央揃えを行うにはどうすればよいですか?

答えて

2

この問題を遭遇する可能性のある人は、hdpi、mdpi、xhpi、xxhpi、xxxhdpiの四角いイメージに変更することで解決しました。 大きすぎて歪んだ長方形の画像のサイズを変更しようとするのではなく、

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" 
      > 

    <item 
     android:drawable="@color/grey_3"/> 

    <item android:gravity="center"> 

      <bitmap 
       android:src="@drawable/splash_logo"/> 
    </item> 

</layer-list> 
+1

重力の設定は、アイテムのためではなく、ビットマップ自体の方がよいでしょう。それ以外の場合は、Lollipop以前の端末では –

0

おそらく、描画可能なイメージを9パッチにするのが最も簡単です。

問題は、レイヤーリストにサイズの本質的なアイデアがないことです。境界は、コンテナの内側に配置されるときに設定されます。 xml属性はコンパイル時に設定されるため、xmlドロワブルの内部で動的な値を取得することは困難です。

ImageViewを使用できる場合は、src属性でdrawableを設定し、padding、marginins、scaleTypeを使用してドロアブルのスケーリングの位置を制御できます。

関連する問題