webentwicklung-frage-antwort-db.com.de

Android wie bekomme ich AppCompat.Translucent Typ Theme mit Unterstützung Actionbar?

Ich möchte die Support-Aktionsleiste zu einer meiner Aktivitäten hinzufügen, ich habe zuvor das theme.translucent für diese Aktivität verwendet, aber damit die Support-Aktionsleiste funktioniert, muss ich ein transluzentes beibehalten, damit das Theme.AppCompat übernommen wird Thema in dieser Aktivität, aber leider gibt es keine Theme.AppCompat.translucent, die ich standardmäßig sehen kann, gibt es eine Möglichkeit, dies zu tun?

61
Edmund Rojas

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

Fügen Sie Ihrer styles.xml-Datei 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 In etwas anderes ändern, wenn Sie andere Dinge aus dem Thema übernehmen möchten, z. B. Dialogstile usw. Ein Name wie Theme.AppCompat.Light.Translucent Hätte beispielsweise die Eigenschaften des Light-Themas .

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

<activity
    Android:name=".TranslucentActivity"
    Android:theme="@style/Theme.AppCompat.Translucent" >
</activity>
146
Cameron Ketcham

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 die Kopfzeile des Stils sein, wenn die Symbolleiste ausgeblendet werden soll. Sie können jedes übergeordnete Thema mit NoActionBar für andere Effekte verwenden.

Hoffe das hilft

36
Dhaval Chheda

Wenn wir Translucent für transparente Aktivitäten verwenden. Es wirft andere Probleme auf - die Farbe von Msgbox (jetzt weiß, vorher schwarz), die Standarddialogfarbe, die Drehfelder lassen sich zwar nach unten verschieben, aber die Unterstreichung und der Dropdown-Pfeil werden nicht angezeigt. Die Spinner sind schwarzer Text schwarz; Dropdown-Text weiß Dropdown-Text schwarz usw. Um dieses Problem zu beheben, können Sie einfach den folgenden Code verwenden

im Stil

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

In der Manifestdatei

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

Ich hoffe es hilft Danke

4
Monika

Camerons Antwort ist ein netter Hack , aber es hat eine schwebende Aktionsleiste erzeugt und meine Statusleiste eingefärbt, was ich nicht wollte. Also habe ich weitere XML-Attribute hinzugefügt, um die Statusleiste transparent zu machen (für sdk> = 19) und den Code Java) verwendet, 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>
2
user4831795