Невозможно получить изображение (просмотр изображения) под прозрачной строкой состояния - PullRequest
1 голос
/ 22 мая 2019

Я пытаюсь получить изображение под строкой состояния в Android Studio. До сих пор мне удалось получить полностью прозрачную строку состояния, но я не могу понять, как на самом деле рисовать изображения под ней. Может ли кто-нибудь указать мне правильное направление?

Спасибо.

Моя основная активность:

public class MainActivity extends AppCompatActivity {
    private int newPosition = 0;
    private int currentPosition = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        BottomNavigationView bottomNav = findViewById(R.id.bottom_navigation);
        bottomNav.setOnNavigationItemSelectedListener(navListener);
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new InfoFragment()).commit();
    }

    private BottomNavigationView.OnNavigationItemSelectedListener navListener =
            new BottomNavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                    Fragment selectedFragment = null;

                    switch (menuItem.getItemId()) {
                        case R.id.nav_info:
                            selectedFragment = new InfoFragment();
                            newPosition = 1;
                            break;
                        case R.id.nav_event:
                            selectedFragment = new EventsFragment();
                            newPosition = 2;
                            break;
                        case R.id.nav_shop:
                            selectedFragment = new ShopFragment();
                            newPosition = 3;
                            break;
                    }

                    FragmentManager fragmentManager = getSupportFragmentManager();
                    FragmentTransaction transaction = fragmentManager.beginTransaction();

                    if (currentPosition < newPosition) {
                        //transaction.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_right, R.anim.enter_from_right, R.anim.exit_to_right);
                    } else if (currentPosition > newPosition) {
                        //transaction.setCustomAnimations(R.anim.enter_from_left, R.anim.exit_to_left, R.anim.enter_from_left, R.anim.exit_to_left);
                    }

                    transaction.addToBackStack(null);
                    transaction.add(R.id.fragment_container, selectedFragment, "FRAGMENT").commit();
                    currentPosition = newPosition;
                    return true;
                }
            };
}

My activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".MainActivity">

    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        android:layout_above="@id/bottom_navigation"/>

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:menu="@menu/bottom_navigation"
        android:background="?android:attr/windowBackground"
        />
</RelativeLayout>

minSdkVersion равно 22, а targetSdkVersion равно 28.

1 Ответ

0 голосов
/ 22 мая 2019

Посмотрите на android:fitSystemWindows и / или WindowInsets API.

fitSystemWindows в основном говорит системе, что вы хотите, чтобы ваши представления помещались на весь экран.В отличие от значения по умолчанию, когда ваш вид отображает только подгонки от строки состояния до чуть выше панели навигации.

WindowInsets может использоваться для дальнейшей настройки, где системный интерфейс будет или не будет отображаться.

Для вашего случая использования android:fitSystemWindows должно хватить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...