J'aimerais ajouter la barre d'action de support à l'une de mes activités. J'utilisais auparavant le thème.translucent avec cette activité, mais afin de rendre le travail de la barre d'action de support nécessaire pour hériter de Theme.AppCompat, je dois conserver une traduction transparente. thème dans cette activité, mais malheureusement, il n’ya pas de thème.AppCompat.translucent que je peux voir par défaut. Y at-il un moyen de le faire?
Vous pouvez créer un nouvel ensemble de styles à utiliser, qui ont les mêmes propriétés que Theme.Translucent
de themes.xml .
Ajoutez les éléments suivants à votre fichier 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>
Vous pouvez changer le préfixe Theme.AppCompat
vers quelque chose d'autre si vous souhaitez hériter d'autres éléments du thème, tels que les styles de dialogue, etc. Par exemple, un nom tel que Theme.AppCompat.Light.Translucent
aurait les propriétés du thème Lumière.
Pour utiliser le nouveau style, définissez la propriété theme sur @style/Theme.AppCompat.Translucent
<activity
Android:name=".TranslucentActivity"
Android:theme="@style/Theme.AppCompat.Translucent" >
</activity>
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>
Cela devrait être l'en-tête de style si vous voulez que la barre d'outils disparaisse. Vous pouvez utiliser n'importe quel thème parent doté de NoActionBar pour d'autres effets.
J'espère que cela t'aides
Si nous utilisons Translucent pour une activité transparente. Cela soulève d’autres problèmes - la couleur de Msgbox (maintenant blanche et précédemment noire), la couleur de la boîte de dialogue par défaut, les fileurs déroulants ne s'affichent pas mais ne montrent ni le soulignement ni la flèche déroulante. Les fileuses sont en couleur noir texte noir; liste déroulante blanche liste déroulante noir et etc. Pour résoudre ce problème, vous pouvez simplement utiliser le code ci-dessous
Dans le style
<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>
dans le fichier manifeste
<activity
Android:name=".activity.YourActivityName"
Android:theme="@style/Theme.AppCompat.Transparent.NoActionBar" />
J'espère que ça va aider Merci
La réponse de Cameron est un Nice hack , mais elle produisit une barre d'action flottante et teinta la barre de statut, ce que je ne voulais pas. J'ai donc ajouté plus d'attributs xml pour rendre la barre d'état transparente (pour sdk> = 19) et utiliser Java pour rendre la barre d'action invisible).
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>
manifeste.xml
<application
Android:icon="@mipmap/ic_launcher"
...
Android:theme="@style/AppTheme"
...
>
<activity Android:name=".MainActivity"
Android:theme="@style/AppTheme.TranslucentBG"
...
>
...
</activity>
</application>