我的活动中有两个片段,fA 和 fB。当我单击 fA 中的按钮时,fB 会替换 fA。fB 就像 Google Play 商店视图一样,当您打开查看某些应用程序时。该图像位于透明状态栏下方。我通过将以下代码添加到 fB#onCreateView 来做到这一点:
Window w = getActivity().getWindow();
w.getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
w.setStatusBarColor(Color.TRANSPARENT);
Run Code Online (Sandbox Code Playgroud)
当我按返回时,fB被删除并被fA取代,一切正常,但工具栏位于状态栏下方。喜欢:

然而,它应该看起来像:

这就是片段首次加载时的样子。
有什么办法可以清除我在 fB 中设置的标志吗?我尝试将此代码放入片段的 onResume 中,但没有成功!
w.getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|View.SYSTEM_UI_FLAG_VISIBLE);
Run Code Online (Sandbox Code Playgroud)
而且,我也尝试过:
w.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
w.addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)
还有其他方法可以解决这个问题吗?谢谢你!
android android-fragments android-view android-fullscreen android-statusbar
我知道当所有项目都发出时,会调用观察者的 OnComplete 。在下面的代码中,我将数据从游标放入 flatMap 运算符中的 ArrayList。我的光标有 100 个条目( c.getCount() 给出 100 ),我的列表大小是 100。 onNext 也被调用 100 次。但 onComplete 没有被调用。我正在 onComplete 中填充列表视图。
static int i = 0;
final List<String> ar = new ArrayList<>();
ListView lv = ...;
ArrayAdapter<String> adapter = ...;
.
.
.
q.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.flatMap(new Func1<SqlBrite.Query, Observable<String>>() {
@Override
public Observable<String> call(SqlBrite.Query query) {
Cursor c = query.run();
c.moveToFirst();
Log.d("testApp", String.valueOf(c.getCount())); // prints 100
do {
ar.add(c.getString(0));
} while (c.moveToNext());
Log.d("testApp", String.valueOf(ar.size())); // prints 100
return Observable.from(ar);
}
}).subscribe(new Observer<String>() …Run Code Online (Sandbox Code Playgroud)