2016-12-20 5 views
7

일부는 입니다. 스타일 속성android이라는 접두사가 필요하며 일부는 필요하지 않습니다. 그 이유는 무엇입니까. 같은 android : style에 접두어를 추가해야하는 이유는 무엇입니까?

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 

우리는 왜 android:windowActionBar 및 SDK 버전 안드로이드 스타일을 바탕으로

답변

2

android:windowNoTitle 서로 다른 네임 스페이스로 분류됩니다 사용하지 않았습니다. 테마를 오버라이드하려면 네임 스페이스를 따라야합니다.

AppCompat 테마를 확장 할 때 당신이 android: 접두사를 필요로하지 않는 이유는, 그러나 당신이 뭔가를 원한다면, 이제 Theme.Holo을 가정 해 봅시다

- 당신이 그들을 위해 2 개 가지 스타일이있을 것이다 - 사전 롤리팝 장치에 대한 하나를, 하나는 -21이고, 후자는 각 스타일 속성 앞에 접두사가 android:입니다.

+0

그러나 추가시기와 무시시기를 어떻게 기억합니까? AppCompat에는 항상 필요하지 않습니다. 그러나 우리가 Holo 테마처럼 그것을 사용한다면 우리는 style.xml을위한 두 개의 폴더를 생성해야합니다. 하나는 android 접두사가없는 lolipop을위한 것이고 하나는 prefix가 붙는 것입니다. 맞습니까? – Nepster

+0

예, 'Holo'에 2 개의 다른 xml이 사용됩니다. 하나는 스타일에, 다른 하나는 스타일 21에 사용됩니다. 당신이 그것을해야 할 때를 알 수있는 방법이 있는지는 잘 모르겠지만, 대부분의 경우 IDE는 더 높은 API 레벨이 필요하다는 오류를 보여 주므로 빠른 검색을 통해 문제를 해결할 수 있습니다. –

0

어떤 테마를 사용하고 어떤 컨텍스트를 사용하는지에 따라 다릅니다. 이러한 속성은 다른 출처에 의해 정의됩니다.

속성 이름의 접두어가 android: 인 경우 프레임 워크 속성이며 정의 된 Android 버전에만 사용할 수 있습니다.

속성에 접두사가 전혀 붙지 않으면 속성이 자신의 응용 프로그램에서 정의됩니다. 여기에는 라이브러리로 가져온 모든 속성 정의가 포함됩니다.

예에서 지원 라이브러리의 일부이며 응용 프로그램의 일부인 AppCompat의 테마를 정의하고 있습니다. 프레임 워크 위젯은 이러한 색상을 직접 인식하지 못합니다.