小编Edw*_*oli的帖子

展开的搜索视图折叠后,其他选项菜单项不显示

I have a simple activity with options menu setup with the code shown below. The problem i'm experiencing is that after expanding and collapsing the searchview, menu items with app:showAsAction="ifRoom" do not appear, even though there is room on the toolbar. Menu items with app:showAsAction="never" on the other hand do appear.

menu_simple_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_search"
        android:icon="@drawable/ic_search_white_24dp"
        android:title="@string/action_search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always|collapseActionView" />
    <item
        android:id="@+id/action_filter"
        android:icon="@drawable/ic_filter_list_white_24dp"
        android:title="@string/action_filter"
        app:showAsAction="ifRoom" />

    <item
        android:id="@+id/action_sort"
        android:icon="@drawable/ic_sort_white_24dp"
        android:title="@string/action_sort"
        app:showAsAction="ifRoom" />

    <item
        android:id="@+id/action_print_all"
        android:icon="@drawable/ic_print_white_24dp" …
Run Code Online (Sandbox Code Playgroud)

android android-optionsmenu searchview

5
推荐指数
1
解决办法
417
查看次数

RXJava Observable在主线程而不是后台线程上执行

我使用该Observable.fromCallable方法创建了一个Observable,并订阅了它,如下面的代码片段所示。

Observable<String> stringObservable = Observable.fromCallable(new Callable<String>() {
        @Override
        public String call() throws Exception {
            Thread.sleep(1000);
            return Thread.currentThread().getName();
        }
});

stringObservable.subscribeOn(Schedulers.io());
stringObservable.observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Observer<String>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(String aDouble) {
                Toast.makeText(SimpleActivity.this, "onNext: " + aDouble, 
                Toast.LENGTH_LONG).show();
            }

            @Override
            public void onError(Throwable e) {
                new AlertDialog.Builder(SimpleActivity.this)
                        .setTitle("Error")
                        .setMessage(e.toString())
                        .show();
            }

            @Override
            public void onComplete() {

            }
        });
Run Code Online (Sandbox Code Playgroud)

上面的片段产生了一个祝酒词,表明Callable在主线程而不是Schedulers.io线程上运行。发生了什么?

android rx-android rx-java2

2
推荐指数
1
解决办法
2177
查看次数