laobie / StatusBarUtil

A util for setting status bar style on Android App.
http://t.cn/Rq746Kb
Apache License 2.0
8.81k stars 1.72k forks source link

图片的没办法沉浸式状态栏 #133

Open autismbug opened 7 years ago

autismbug commented 7 years ago

大大,你好! 1.下载的 demo 中 Set For ImageView 没问题,状态栏透明。 2.在自己项目中,完全按照 demo sample 中代码操作。 外层LinearLayout,里面 ImageView,下面LinearLayout,然后在 Activity中调用StatusBarUtil.setTransparentForImageView(this, mViewNeedOffset); 或者StatusBarUtil.setTranslucentForImageView(this,0,mViewNeedOffset); 只是感觉图片向上延伸了一部分,但是状态栏没有透明。 3.用小米5s 和 5.0系统模拟器,测试都是同样效果。 4.是不是还有什么需要注意的地方?求解答

laobie commented 7 years ago

如果是 demo 正常的话,建议在 demo 的基础上改改看,应该是你使用的姿势问题,具体可以贴图和给出代码

autismbug commented 7 years ago

布局部分代码:

<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"
    android:background="@color/colorBackGround"
    android:orientation="vertical"
    tools:context="cn.findsports.xiangdong.ui.activity.bookvenue.SearchVenueActivity">

    <ImageView
        android:id="@+id/sportTypeBackground_image"
        android:layout_width="match_parent"
        android:layout_height="155dp"
        android:scaleType="centerCrop"
        android:src="@drawable/basketball_background"/>

    <LinearLayout
        android:id="@+id/viewNeedOffset"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

Activity部分代码:

 @BindView(R.id.viewNeedOffset)
    LinearLayout mViewNeedOffset;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_search_venue);
        ButterKnife.bind(this);
        StatusBarUtil.setTranslucentForImageView(this,0,mViewNeedOffset);

结果 image

laobie commented 7 years ago

你把 NeedOffsetView 参数传 null 试试

autismbug commented 7 years ago

传 null 的话,下面整体上移了,状态栏还是黑的

laobie commented 7 years ago

你是不是 BaseActivity 中设置了什么,建议还是看看 demo 的代码

DuoLa512 commented 7 years ago

public class MainActivity extends BaseActivity{

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

    if (savedInstanceState == null) {
        loadRootFragment(R.id.fl_container, MainFragment.newInstance());
    }

    // 可以监听该Activity下的所有Fragment的18个 生命周期方法
    registerFragmentLifecycleCallbacks(new FragmentLifecycleCallbacks(){

    });
}

@Override
public void onBackPressedSupport() {
    // 对于 4个类别的主Fragment内的回退back逻辑,已经在其onBackPressedSupport里各自处理了
    super.onBackPressedSupport();
}

@Override
public FragmentAnimator onCreateFragmentAnimator() {
    // 设置横向(和安卓4.x动画相同)
    return new DefaultHorizontalAnimator();
}

@Override
protected void setStatusBar() {
    StatusBarUtil.setTranslucentForImageViewInFragment(MainActivity.this, null);
}

} 这样也出现布局上移,求教

huqianlong commented 7 years ago

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

进来是默认的颜色 需要你在设置它透明色的时候加上这两句代码

ihewro commented 6 years ago

StatusBarUtil.setTransparentForImageView 本质就是将整体布局向上偏移了一个状态栏的高度,然后你需要将有些布局再往下偏移状态栏的高度,也就是第二个参数