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

조회수 12958회
<LinearLayout
    background = "@drawable/radius">
    <Layout
           background = "@color/white"/>
    <Layout
           background = "@color/black"/>

</LinearLayout>

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

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

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

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

  • (•́ ✖ •̀)
    알 수 없는 사용자

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을 만들고 이를 레이아웃의 배경으로 만드는 방법이 일반적인 접근입니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)