수색…


전세계 사용자 정의 테마 사용

themes.xml에서 :

<style name="AppTheme" parent="Theme.AppCompat">
    <!-- Theme attributes here -->
</style>

AndroidManifest.xml의 경우 :

<application
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    
    <!-- Activity declarations here -->

</application>

기본, 기본 어두운 색 및 강조 색 정의

테마의 색상 표를 사용자 정의 할 수 있습니다.

프레임 워크 API 사용

5.0
<style name="AppTheme" parent="Theme.Material">
    <item name="android:colorPrimary">@color/primary</item>
    <item name="android:colorPrimaryDark">@color/primary_dark</item>
    <item name="android:colorAccent">@color/accent</item>
</style>

Appcompat 지원 라이브러리 (및 AppCompatActivity )

2.1.x
<style name="AppTheme" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
</style>

활동마다 사용자 정의 테마 사용

themes.xml에서 :

<style name="MyActivityTheme" parent="Theme.AppCompat">
    <!-- Theme attributes here -->
</style>

AndroidManifest.xml의 경우 :

<application
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.AppCompat">
    
    <activity
        android:name=".MyActivity"
        android:theme="@style/MyActivityTheme" />

</application>

Overscroll Color (API 21+)

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:colorEdgeEffect">@color/my_color</item>
</style>

리플 색상 (API 21 이상)

5.0

사용자가 클릭 할 수있는 뷰를 누를 때 리플 애니메이션이 표시됩니다.

보기에서 ?android:colorControlHighlight 를 할당하는 앱에서 사용한 것과 동일한 리플 색상을 사용할 수 있습니다. 테마의 android:colorControlHighlight 속성을 변경하여이 색상을 맞춤 설정할 수 있습니다.

이 효과 색상은 변경할 수 있습니다.

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:colorControlHighlight">@color/my_color</item>
</style>

또는 소재 테마를 사용하는 경우 :

<style name="AppTheme" parent="android:Theme.Material.Light">
    <item name="android:colorControlHighlight">@color/your_custom_color</item>
</style>

라이트 상태 표시 줄 (API 23 이상)

이 특성은 상태 표시 줄 아이콘의 배경을 화면 맨 위에 흰색으로 바꿀 수 있습니다.

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:windowLightStatusBar">true</item>
</style>

반투명 탐색 및 상태 표시 줄 (API 19 이상)

탐색 바 (화면 하단)는 투명해질 수 있습니다. 그것을 달성하는 방법입니다.

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:windowTranslucentNavigation">true</item>
</style>

이 속성을 스타일에 적용하여 상태 표시 줄 (화면 상단)을 투명하게 만들 수 있습니다.

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:windowTranslucentStatus">true</item>
</style>

탐색 바 색상 (API 21 이상)

5.0

이 특성은 탐색 모음 (뒤로, 홈 최근 버튼이 포함 된 탐색 모음)을 변경하는 데 사용됩니다. 보통은 검은 색이지만 색깔은 바뀔 수 있습니다.

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:navigationBarColor">@color/my_color</item>
</style>

테마 상속

테마를 정의 할 때 일반적으로 시스템에서 제공하는 테마를 사용하고 변경 사항은 자신의 응용 프로그램에 맞게 모양을 수정합니다. 예를 들어, 다음은 Theme.AppCompat 테마가 상속 된 방법입니다.

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

이 테마는 이제 명시 적으로 변경된 테마를 제외한 표준 Theme.AppCompat 테마의 모든 속성을 Theme.AppCompat 습니다.

상속 할 때도 바로 가기가 있으며, 일반적으로 자신의 테마에서 상속받을 때 사용됩니다.

<style name="AppTheme.Red">
    <item name="colorAccent">@color/red</item>
</style>

이미 AppTheme. 이 있기 때문에 AppTheme. 이름의 시작 부분에 parent 테마를 정의 할 필요없이 자동으로 상속합니다. 이 기능은 앱의 특정 부분 (예 : 단일 활동)에 대한 특정 스타일을 만들어야하는 경우에 유용합니다.

하나의 앱에 여러 테마 추가

Android 애플리케이션에서 하나 이상의 테마를 사용하여 다음과 같이 모든 테마에 맞춤 색상을 추가 할 수 있습니다.

OneTheme TwoTheme

먼저 style.xml 과 같이 테마를 추가해야한다.

<style name="OneTheme" parent="Theme.AppCompat.Light.DarkActionBar">

</style>

<!--  -->
<style name="TwoTheme" parent="Theme.AppCompat.Light.DarkActionBar" >

</style>
......

위에서 OneThemeTwoTheme을 볼 수 있습니다.

이제 AndroidManifest.xml 로 이동하여 android:theme="@style/OneTheme"애플리케이션 태그에 추가하면 OneTheme 이 기본 테마가됩니다.

<application
        android:theme="@style/OneTheme"
        ...>

attrs.xml 이라는 새 xml 파일을 만들고 다음 코드를 추가합니다.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="custom_red" format="color" />
    <attr name="custom_blue" format="color" />
    <attr name="custom_green" format="color" />
</resources>
<!-- add all colors you need (just color's name) -->

style.xml 돌아가서 각 테마의 값과 함께 다음 색상을 추가하십시오.

<style name="OneTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="custom_red">#8b030c</item>
    <item name="custom_blue">#0f1b8b</item>
    <item name="custom_green">#1c7806</item>
</style>

<style name="TwoTheme" parent="Theme.AppCompat.Light.DarkActionBar" >
    <item name="custom_red">#ff606b</item>
    <item name="custom_blue">#99cfff</item>
    <item name="custom_green">#62e642</item>
</style>

이제 각 테마에 대한 맞춤 색상이 있으며,이 색상을 Google의보기에 추가해 보겠습니다.

"? attr /"을 사용하여 custom_blue 색상을 TextView에 추가하십시오.

이미지보기로 이동하여 다음 색상 추가 :

<TextView>
    android:id="@+id/txte_view"
    android:textColor="?attr/custom_blue" />

우리는 단 한 줄의 테마로 테마를 변경할 수 있습니다. setTheme(R.style.TwoTheme); 이 줄은 onCreate() 메서드의 setContentView() 메서드 앞에 있어야합니다 onCreate() 예 : Activity.java .

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setTheme(R.style.TwoTheme);
    setContentView(R.layout.main_activity);
    ....
}


한 번에 모든 활동의 주제를 변경하십시오.

모든 액티비티의 테마를 변경하려면 MyActivity라는 이름의 새 클래스를 만들어 AppCompatActivity 클래스 (또는 Activity 클래스)를 확장하고 setTheme(R.style.TwoTheme); 행을 추가해야 setTheme(R.style.TwoTheme); onCreate () 메소드에 :

public class MyActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (new MySettings(this).isDarkTheme())
            setTheme(R.style.TwoTheme);
    }
}

마지막으로, 모든 액티비티로 이동하여 MyActivity 기본 클래스를 확장하십시오.

public class MainActivity extends MyActivity {
    ....
}

테마를 변경하려면 MyActivity 로 이동하여 테마 ( R.style.OneTheme , R.style.ThreeTheme ....)로 R.style.TwoTheme 을 변경하십시오.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow