developer tip

Android 지원 작업 표시 줄로 AppCompat.Translucent 유형 테마를 얻는 방법은 무엇입니까?

copycodes 2020. 11. 29. 11:51
반응형

Android 지원 작업 표시 줄로 AppCompat.Translucent 유형 테마를 얻는 방법은 무엇입니까?


내 활동 중 하나에 지원 작업 표시 줄을 추가하고 싶습니다. 이전에는이 ​​활동에 theme.translucent를 사용했지만 지원 작업 표시 줄이 작동하도록하려면 Theme.AppCompat를 상속해야했기 때문에 반투명을 유지해야합니다. 이 활동에는 테마가 있지만 안타깝게도 기본적으로 볼 수있는 Theme.AppCompat.translucent가 없습니다.이 작업을 수행 할 수있는 방법이 있습니까?


themes.xmlTheme.Translucent 에서 와 동일한 속성을 가진 사용할 새 스타일 세트를 만들 수 있습니다 .

styles.xml 파일에 다음을 추가하십시오.

<style name="Theme.AppCompat.Translucent">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@android:style/Animation</item>
</style>

Theme.AppCompat대화 스타일 등과 같은 테마에서 다른 것을 상속하려는 경우 접두사 를 다른 것으로 변경할 수 있습니다 . 예를 들어, 같은 이름 Theme.AppCompat.Light.Translucent은 Light 테마의 속성을 갖습니다.

새 스타일을 사용하려면 테마 속성을 @style/Theme.AppCompat.Translucent

<activity
    android:name=".TranslucentActivity"
    android:theme="@style/Theme.AppCompat.Translucent" >
</activity>

파라 마,

<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowAnimationStyle">@android:style/Animation</item>
    </style>

툴바를 사라지게하려면 스타일 헤더 여야합니다. 다른 효과를 위해 NoActionBar가있는 부모 테마를 사용할 수 있습니다.

도움이 되었기를 바랍니다


투명한 활동을 위해 Translucent를 사용하는 경우. Msgbox의 색상 (이전에는 검은 색 이전에 흰색), 기본 대화 상자 색상, 스피너가 드롭 다운되지만 밑줄과 드롭 다운 화살표가 표시되지 않는 등 다른 문제가 발생합니다. 스피너는 검정색 텍스트 검정색입니다. 드롭 다운 흰색 드롭 다운 텍스트 검정 등.이 문제를 극복하려면 아래 코드를 사용하면됩니다.

스타일

<style name="Theme.AppCompat.Transparent.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
 <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">false</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>

매니페스트 파일에서

<activity
        android:name=".activity.YourActivityName"
        android:theme="@style/Theme.AppCompat.Transparent.NoActionBar" />

도움이 되었기를 바랍니다. 감사합니다.


Cameron의 대답은 멋진 해킹 이지만 플로팅 액션 바를 생성하고 내가 원하지 않는 상태 표시 줄에 색을 입혔습니다. 그래서 상태 표시 줄을 투명하게 만들기 위해 더 많은 xml 속성을 추가하고 (sdk> = 19) 작업 표시 줄을 보이지 않게 만들기 위해 Java 코드를 사용했습니다.

mainActivity.java :

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getSupportActionBar().hide();
     ...
    }
     ...
}

styles.xml

<style name="AppTheme.TranslucentBG">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@android:style/Animation</item>

    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>

</style>

manifest.xml

<application
    android:icon="@mipmap/ic_launcher"
    ...
    android:theme="@style/AppTheme"
    ...
    >


    <activity android:name=".MainActivity"
        android:theme="@style/AppTheme.TranslucentBG"
        ...
        >
        ...
    </activity>
</application>

참고 URL : https://stackoverflow.com/questions/20862258/android-how-to-get-appcompat-translucent-type-theme-with-support-actionbar

반응형