마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

디자인이 나왔는데 거기에 맞게 레이아웃을 잘 못짜겠네요!

0 추천

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"    
    >  
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"            
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"                
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:layout_weight="1"                    
                    <FrameLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent">
                        <ImageView
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:src="@drawable/main_top" />
                    </FrameLayout>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:layout_weight="8"                    
                </LinearLayout>                
                ...생략           

왼쪽 사진은 제가 원하는 레이아웃입니다..임의로 배경에 색상을 주었구요..오른쪽사진은 제일 첫번째 칸에 이미지를 넣은건데요 제가 원하건 왼쪽에 짜여져있는 레이아웃데로 이미지가 가득차게 들어가는 것입니다. 하지만 저렇게 공백과 같이 이미지가 삽입됩니다. 

빙구짱 (1,720 포인트) 님이 2015년 7월 16일 질문
질문이 길어서..안올라가져서 코드랑 질문내용 좀 삭제했습니다 ㅠ 코드 이상해도..걍 대충 봐주세요...구조는 부모 리니어레이아웃이 match content를 다 설정해놓고 있고 기 밑에 자식 리니어레이아웃은 높이는 wrap content로 설정하고 가중치를 다르게 줘서 구현했습니다..
이미지 삽입하면 저렇게 레이아웃 비율이 달라지는것도 문제입니다. 어떻게 보면 자식 레이아웃을 wrap content로 했으니 그럴만도 한데...이렇게 안하면 가중치를 어떻게 써야하는지 모르겠습니다..
그리고 제가 가중치를 쓰는 것은 다양한 해상도가 다른 기기에서의 호환을 위해 그렇게 하는거에요.. 그래서 구지 저렇게 하는건데 방법이 없을까요? 높이는 절대값으로 그냥 주어야 할까요?

3개의 답변

0 추천
ImageView에는 scaleType 속성이 있습니다.

fitxy 정도 써보면 변화가 있을 듯 한데요.

android imageview scaletype 으로 검색하면 더 상세한 정보 찾을 수 있습니다.
ㄱㄴㄷ 님이 2015년 7월 16일 답변
그렇게 하면 저 오른쪽의 커진 레이아웃에 맞게 이미지가 더 커지면서 비율이 깨집니다. ㅠㅠ
0 추천
일단 vertical형식으로 짜신걸 보니, width는 무조건 부모크기[꽉차게]인거같고,

height가 말썽인거같은데.. 주어진 비율대로 이미지가 나오는게 아니라,

이미크기에 맞춰서 자식 레이아웃이 변형된게 아닌가 싶어요.

리니어레이아웃에 가중치를 줘도 height가 wrap_content이면 그런 현상이 발생할 수 있습니다.

이미지나 텍스트 등을 넣을 자식 리니어 레이아웃의 높이를 wrap_content가 아닌 0dp 등으로 해보셔요.

wrap_content로 하면 삽입되는 이미지 크기에 맞춰서 높이가 달라질수있습니다..

리니어 레이아웃 예제가 많으니 함 찾아보시는걸 추천해요
anci (19,950 포인트) 님이 2015년 7월 16일 답변
네 하지만 높이를 match로 하면 가중치가 제대로 먹히질 않습니다..ㅠ 딱 기기 스크린 사이즈에 맞게 비율을 정하고 싶은데 그럴라면 wrap으로 해서 가중치로 비율을 정한다고 알고있는데..저렇게 이미지를 넣으니 비율이 깨지네요 ㅠㅠ
이미지가 뭔진 모르겠지만...리니어 레이아웃의 배경?으로 쓸거면 비슷한 비율로 이미지를 제작해야 하지 않을까요 ;_;) 현재 레이아웃이 세로가 가로에 비해 짧은데, 거기에 리니어 레이아웃과 비율이 상이한 애를 넣으면 비율이 달라질수 밖에 없지 않나 싶어요..제가 리니어 레이아웃 작업했을 땐 대강 유사한 비율로 이미지를 만들어서 넣었거든요..
0 추천
wrap_content 말고 anci님 말씀대로 0dp로 넣어보세요.
코딩인헬 (12,150 포인트) 님이 2015년 7월 16일 답변
...