Java Can';t在透明状态栏下获取图像(图像视图)

Java Can';t在透明状态栏下获取图像(图像视图),java,android,statusbar,Java,Android,Statusbar,我正在尝试在Android Studio的状态栏下获取图像。到目前为止,我已经设法使状态栏完全透明,但我似乎不知道如何在它下面实际绘制图像。有人能给我指出正确的方向吗 谢谢 我的主要活动: public class MainActivity extends AppCompatActivity { private int newPosition = 0; private int currentPosition = 0; @Override protected vo

我正在尝试在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;
                }
            };
}
public类MainActivity扩展了AppCompatActivity{
私有int newPosition=0;
私有int currentPosition=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView bottomNav=findViewById(R.id.bottom\u导航);
bottomNav.setOnNavigationItemSelectedListener(navListener);
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_容器,新的InfoFragment()).commit();
}
private BottomNavigationView.OnNavigationItemSelectedListener navListener=
新建BottomNavigationView.OnNavigationItemSelectedListener(){
@凌驾
公共布尔值onNavigationItemSelected(@NonNull MenuItem MenuItem){
片段selectedFragment=null;
开关(menuItem.getItemId()){
案例R.id.nav_信息:
selectedFragment=newinfofragment();
newPosition=1;
打破
案例R.id.nav_事件:
selectedFragment=新事件片段();
newPosition=2;
打破
案例R.id.nav_车间:
selectedFragment=新的ShopFragment();
newPosition=3;
打破
}
FragmentManager FragmentManager=getSupportFragmentManager();
FragmentTransaction=fragmentManager.beginTransaction();
如果(当前位置<新位置){
//transaction.setCustomAnimations(R.anim.enter_from_right,R.anim.exit_to_right,R.anim.enter_from_right,R.anim.exit_to_right);
}else if(当前位置>新位置){
//transaction.setCustomAnimations(R.anim.enter_from_left,R.anim.exit_to_left,R.anim.enter_from_left,R.anim.exit_to_left);
}
transaction.addToBackStack(空);
添加(R.id.fragment_容器,selectedFragment,“fragment”).commit();
当前位置=新位置;
返回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>


MinSDK版本是
22
,TargetSDK版本是
28

看看
android:fitSystemWindows
和/或API

fitSystemWindows
基本上是告诉系统您希望视图能够适应整个屏幕。与默认情况相反,在默认情况下,视图仅渲染从状态栏下方到导航栏正上方的拟合

WindowInsets
可用于进一步微调将绘制或不绘制系统UI的位置


对于您的用例,
android:fitSystemWindows
应该足够了

看看
android:fitSystemWindows
和/或API

fitSystemWindows
基本上是告诉系统您希望视图能够适应整个屏幕。与默认情况相反,在默认情况下,视图仅渲染从状态栏下方到导航栏正上方的拟合

WindowInsets
可用于进一步微调将绘制或不绘制系统UI的位置


对于您的用例,
android:fitSystemWindows
应该足够了

我已经发现并尝试过使用它,但实际上没有任何变化。在这种情况下,也许可以显示您尝试过的代码,这样更容易看到正在发生的事情。同样重要的是您的minSdk和targetSdk版本,以及您使用的库。例如,支持设计、appcompat或相关库我已经用我认为重要的代码编辑了我的帖子,我已经找到并尝试过使用它,但实际上没有任何变化。在这种情况下,可能会显示你尝试过的代码,这使我更容易看到发生了什么。同样重要的是您的minSdk和targetSdk版本,以及您使用的库。例如,支持设计、appcompat或相关库我用我认为重要的代码编辑了我的帖子