2016-05-31 5 views
1

지원 라이브러리를 사용하여 툴바를 사용자 정의하려고했습니다. android : theme 설정은 API21 +에서 완벽하게 작동하지만 API를 낮추면 완전히 무시됩니다.Android : Theme는 이전 API에 아무런 영향을 미치지 않습니다.

<android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 
</android.support.design.widget.AppBarLayout> 

android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"는 API21의 + 화이트 아이콘, 아이콘이 오래된 장치에 검은 남아있는 도구 모음을 만드는 :

여기 내 XML입니다.

업데이트 : appBarLayout에 다른 자식 (tabLayout)을 추가하여 테스트했습니다. 테마가 올바르게 적용되었습니다. 그러나 지원 도구 모음은 직접 설정하더라도 테마를 인식하는 것을 완전히 거부합니다.

답변

2

나는 마침내 문제를 발견했다. 내 레이아웃은 super.onCreate()를 호출하기 전에 설정되었으며 어떤 이유로 툴바는 기본 툴바가 사용되지 않는 프리 롤리팝 장치에 적절한 테마를 적용하지 않습니다. 내가 다른 대답을 주석으로 이미이 시도했습니다

super.onCreate(savedinstancestate); 
0

안녕하세요, 버전 번호가있는 스타일 파일을 만들어야합니다. 해당 값을 찾아 마우스 오른쪽 버튼으로 클릭 한 다음 값 리소스 파일 을 클릭 한 다음 파일 이름을 스타일로 지정한 다음 사용 가능한 옵션 아래의 대화 상자에서 한정자를 선택하고 아이콘 >>을 누른 다음 버전 19를 입력하십시오 그리고이 파일 그것은 당신을 도울 수있는 API 광고 21+

this is the dialog you will get on click of value Resource file

this is the final dialog where you need to enter your version number

다음 버전 적은을 위해 작동합니다.

+0

: 후

setContentView(R.layout.main); 

온다 :

은 그래서 나는 확인했다. android : 테마 값은 내가 설정 한 방법에 관계없이 완전히 무시되는 것 같습니다. – Ramin

0

API 버전 기반 폴더에서 테마 스타일을 설정하고 적용하면 API 버전에 따라 적용됩니다.

styles.xml 안에 테마를 넣으십시오. 그런 다음 서로 다른 API 레벨의 폴더에 대한 values ​​폴더의 styles.xml을 복제합니다. [값 -X 폴더를 생성해야한다는 요구 사항에 따라] 아래 이미지를 참조하십시오. 고투의 일 후

Click here to view image

+0

ThemeOverlay.AppCompat.Dark.ActionBar가 라이브러리 자체에 있음에도 불구하고 이미이 도구를 사용해 보았습니다. 사용자 정의 테마를 만들고이를 부모로 설정했습니다. 효과가 없다. android : 테마 값은 각기 다른 폴더 (styles-v19.xml)에 넣든 안되든 더 낮은 API에서는 완전히 무시됩니다. – Ramin