example - Android, wie AppCompat.Translucent Typ Theme mit Unterstützung Aktionsleiste?




toolbar set action bar (3)

Camerons Antwort ist ein netter Hack , aber er erzeugte eine schwebende Aktionsleiste und tönte meine Statusleiste, die ich nicht wollte. Also fügte ich weitere xml-Attribute hinzu, um die Statusleiste transparent zu machen (für sdk> = 19), und benutzte Java-Code, um die Aktionsleiste unsichtbar zu machen.

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> 

Ich möchte die Unterstützungs-Aktionsleiste zu einer meiner Aktivitäten hinzufügen, ich hatte zuvor theme.translucent mit dieser Aktivität verwendet, aber damit die Unterstützungs-Aktionsleiste funktioniert, musste ich die Theme.AppCompat erben Thema in dieser Aktivität, aber leider gibt es nicht eine Theme.AppCompat.translucent, die ich standardmäßig sehen kann, gibt es eine Möglichkeit, dass dies getan werden kann?


Parama,

<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>

Dies sollte der Stilheader sein, wenn die Symbolleiste verschwinden soll. Sie können jedes übergeordnete Thema verwenden, das NoActionBar für andere Effekte hat.

Hoffe das hilft


Sie können eine neue Gruppe von Stilen erstellen, die dieselben Eigenschaften wie Theme.Translucent aus themes.xml .

Fügen Sie Ihrer Datei styles.xml Folgendes hinzu:

<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>

Sie können das Präfix Theme.AppCompat zu einem anderen Theme.AppCompat , wenn Sie andere Theme.AppCompat dem Theme.AppCompat erben möchten, z. B. Dialogstile usw. Ein Name wie Theme.AppCompat.Light.Translucent hätte beispielsweise die Eigenschaften des Light-Themas.

Um den neuen Stil zu verwenden, legen Sie die @style/Theme.AppCompat.Translucent Eigenschaft auf @style/Theme.AppCompat.Translucent

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




android-actionbar-compat