2016-10-27 2 views
1

스플래시 화면 로고로 사용하기 위해 양면에 여백이있는 이미지를 가운데에 놓으려고합니다. 문제는 화면 전체에 걸쳐 늘어나거나 gravity을 사용하면 패딩을 무시한다는 것입니다. 레이어 목록 안드로이드에서 드로어 블을 어떻게 스케일링하고 가운데에 배치합니까?

나도 같은 결과 SO에 비트 맵, android:gravity="fill_horizontal" 및 기타 다양한 제안을 사용하려고했습니다
<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> 

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

.

내 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 속성에 드로어 블을 설정하고 패딩, 여백 및 스케일 유형을 사용하여 드로어 블의 크기 조절 위치를 제어 할 수 있습니다.

관련 문제