XML안에서 다수의 Layout이 계층별로 있을 때, 각 layout에 설정된 background의 priority를 설정할 수가 있나요 ?


<LinearLayout
    background = "@drawable/radius">
    <Layout
           background = "@color/white"/>
    <Layout
           background = "@color/black"/>

</LinearLayout>

위와같은 xml 파일이 있다고 할때

layer-list처럼 우선순위를 정할수 있을까요? overdraw? 라고해야하나 저는 화면의 전체적인 테두리가 radius가 있으면 좋겠고 그 내부 배경은 절반은 하양, 절반은 검정이 됐으면 좋겠어요.

근데 이런식으로 적용 했을때 내부 레이아웃에서 설정한 컬러들이 상위 레이아웃의 background 값을 덮어버리는거 같더라고요 radius 적용도 안되고..

하위버전을 호환해야해서 backgroundTint를 쓸 수가 없는데 무슨 방도가 있을까요 ? ㅠㅠ

  • 2016년 08월 08일에 작성됨

조회수 232


1 답변


좋아요
1
싫어요
채택취소하기

priority를 z-index라고 이해했습니다. z-index는 컨테이너 레이아웃(Root view) 내에 추가된 순서대로 설정됩니다.

<FrameLayout    
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        ... />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        .../>
</FrameLayout>

예를 들면 위 코드에서는 ImageView가 보다 TextView가 윗쪽에(z-index가 높게) 그려집니다. 이 룰 외에는 XML에서 z-index를 조절하는 방법은 존재하지 않습니다.

코드 상으로는 아래와 같은 함수가 존재하기는 합니다만 이걸 설정한다고 하더라도 원하는 것을 처리하기는 어려워 보입니다.

아래 링크처럼 테두리가 있는 drawable을 만들고 이를 레이아웃의 배경으로 만드는 방법이 일반적인 접근입니다.


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close