it-swarm.com.ru

Полупрозрачная строка состояния в Android

Я использую следующий макет (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>

Со следующими стилями-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>

Но я все еще не могу заархивировать прозрачную строку состояния

Это выглядит так

 Non-Transparent

Но я хочу что-то вроде этого (Новое приложение Google Newsstand)

 Transparent status bar

Примечание: я использую

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'
3
ThunderRoid

попробуй это:

добавьте это в тему вашего приложения:

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

Установите Android:fitsSystemWindows=”true” в корневой контейнер

Теперь в вашей деятельности 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);
    }

Обновлено, Результат:

 enter image description here

вы можете сделать snackbar в верхней части экрана:

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();

Для получения дополнительной информации см. здесь

17
rafsanahmad007
@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); } }

}

Используйте это в своей деятельности. Но изменение цвета строки состояния разрешено только после Android L

5
Arpan Sharma

Добавьте эти две строки в onCreate действия, которое вы хотите, чтобы его строка состояния макета была прозрачной

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KitKat) {
getWindow().setStatusBarColor(Color.TRANSPARENT);
}

Не нужно менять тему приложения или макет XML. При этом ваша панель не должна быть прозрачной во всем приложении, если вы этого не хотите.

1
NaturallyAsh

Приведенный ниже код делает строку состояния прозрачной, но панель навигации непрозрачной для API21 +. 

ПРИМЕЧАНИЕ: вы не должны устанавливать 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
}
0
dgngulcan