J'utilise la disposition suivante (main_activity.xml)
<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true">
<Android.support.v4.widget.NestedScrollView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_margin="@dimen/text_margin"
Android:fitsSystemWindows="true"
Android:text="@string/large_text" />
</Android.support.v4.widget.NestedScrollView>
</Android.support.design.widget.CoordinatorLayout>
Avec les styles suivants-v21
<resources>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="Android:windowDrawsSystemBarBackgrounds">true</item>
<item name="Android:statusBarColor">@Android:color/transparent</item>
<item name="Android:windowTranslucentStatus">true</item>
<item name="Android:windowTranslucentNavigation">true</item>
</style>
</resources>
Mais je ne peux toujours pas archiver une barre d'état transparente
Ça ressemble à ça
Mais je veux quelque chose comme ça (nouvelle application Google Newsstand)
Note: j'utilise
compile 'com.Android.support:appcompat-v7:25.1.1'
compile 'com.Android.support:support-v4:25.1.1'
compile 'com.Android.support:design:25.1.1'
essaye ça:
ajoutez ceci dans le thème de votre application:
<item name="Android:windowTranslucentStatus">true</item>
<item name="Android:windowTranslucentNavigation">true</item>
Définissez Android:fitsSystemWindows=”true”
sur le conteneur racine
Maintenant dans votre activité onCreate ():
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KitKat) {
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
Mis à jour, Résultat:
vous pouvez faire le snackbar
dessiner en haut de l'écran:
Snackbar snack = Snackbar.make(parentLayout, str, Snackbar.LENGTH_LONG);
View view = snack.getView();
FrameLayout.LayoutParams params =(FrameLayout.LayoutParams)view.getLayoutParams();
params.gravity = Gravity.TOP;
view.setLayoutParams(params);
snack.show();
Pour plus d'informations, voir ici
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Window window = getWindow();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(Color.TRANSPARENT); } }
}
Utilisez ceci dans votre activité. Mais changer la couleur de la barre d'état n'est autorisé qu'après Android L
Ajoutez ces deux lignes dans l'activité onCreate pour laquelle vous voulez que sa barre d'état de disposition soit transparente
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KitKat) {
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
Pas besoin de changer le thème de votre application ou la mise en page XML. Ce faisant, votre barre n'a pas besoin d'être transparente dans l'ensemble de votre application si vous ne le souhaitez pas.
Le code ci-dessous rend la barre d'état transparente mais la barre de navigation est opaque pour API21 +.
REMARQUE: vous ne devriez pas configurer Android:fitsSystemWindows="true"
.
override fun onCreate(savedInstanceState: Bundle?) {
setupContentWindow()
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
fun setupContentWindow() {
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
window.statusBarColor = Color.TRANSPARENT
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}