2017-04-21 4 views
1

나는 두 가지 스타일을하는 그들에게 전화와 B는 가능 하나하는 것입니다 :여러 스타일을 하나로 결합 할 수 있습니까?

  1. 이 같은 UI 요소에 모두 적용 또는

  2. 하나의 스타일로 둘을 결합

내가 스타일이 부모로부터 상속 수 있다는 것을 알고) (기본적으로 그냥 날 일을 수행 할 수 있도록), 그래서에서 상속 스타일 C를 만들기 같이 뭔가를하고부터 모든 속성을 복사 할 수 스타일 e B를 스타일 C로 변환합니다. 그러나 오히려 내가하려는 일의 요점을 무너 뜨립니다. 스타일을 A 및 B 스타일로 그룹화하여 코드 복제를 피하고 속성을 C로 완전히 파멸시킵니다.

+2

스타일은 다중 상속을 지원하지 않습니다. 또한 관련 : https://stackoverflow.com/questions/12614707/android-xml-theme-inheriting-from-two-parent-themes – akash93

답변

1

여러 스타일 상속이 지원되지 않습니다. 그러나 AB에 공통된 모든 항목이 포함 된 기본 스타일을 만들 수 있습니다. 그런 다음 그것을 상속하십시오.

<style name="SuperTheme" parent="android:Theme"> 
    <!--All the attributes that A and B will have in common. --> 
</style> 

<style name="A" parent="SuperTheme"> 
    <!--Unique attributes only in A. --> 
</style> 

<style name="B" parent="SuperTheme"> 
    <!--Unique attributes only in B. --> 
</style> 
+0

그건 내 관심사를 해결하지 않습니다. 스타일 A와 B의 모든 속성을 하나로 결합하는 방법을 찾고 있습니다. 기본적으로 나는 A와 B의 합집합 인 스타일을 찾고 있는데, 예제에서는 A와 B의 교차점을 사용합니다. 불행히도 도움이되지 않습니다. – Mark

+0

@Mark 스타일의 다중 상속이 없으므로 A와 B의 결합을 직접 수행해야합니다. 그러나 그렇게하기 시작하면 유연성을 잃을 때 디자인 냄새가 있음을 알게 될 것입니다. 나는 아직도 나의 접근을 추천한다. –

+0

귀하의 접근 방식은 내가 설명한 문제를 해결하는 데 아무런 도움이되지 않습니다. 이것을 설명하기 위해 다음 질문을 해봅시다. A와 B 스타일의 모든 속성을 단일보기에 어떻게 적용 하시겠습니까? 당신은 단순히 스타일 상속을 일반적으로지지하는 것처럼 보일 뿐이지 만 일부 상황에서는 유용한 디자인이지만 내 질문에는 완전히 직각입니다. – Mark

관련 문제