小编Dhr*_*iya的帖子

从Android中的切换按钮中删除填充

我在android中创建一个简单的切换按钮,并将背景设置为drawable.

<ToggleButton
    android:layout_width="wrap_content"
    android:drawablePadding="0dp"
    android:layout_height="wrap_content"
    android:text=""
    android:textSize="12sp"
    android:padding="0dp"
    android:id="@+id/tag_text"
    android:background="@drawable/toggle_selector"/>
Run Code Online (Sandbox Code Playgroud)

toggle_selector.xml如下所示:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/toggle_button_off" android:state_checked="false"/>
    <item android:drawable="@drawable/toggle_button_on" android:state_checked="true"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

toggle_button_off和toggle_button_on具有简单的形状,可用一些颜色绘制.

这就是我将这个切换按钮膨胀到我的视图中的方式:

View child = getLayoutInflater().inflate(R.layout.tags, null);
        ToggleButton tag = ((ToggleButton)child.findViewById(R.id.tag_text));
        tag.setText("Testing");
        tag.setTextOff("Testing");
        tag.setTextOn("Testing");
        flowlayout.addView(child);
Run Code Online (Sandbox Code Playgroud)

问题是在切换按钮的文本周围有太多填充,我无法通过设置摆脱它padding = "0dp".这些按钮上的文字是动态添加的,因此设置恒定的高度重量也无济于事.

在此输入图像描述

android togglebutton android-layout

9
推荐指数
1
解决办法
4425
查看次数

在主线程上调用doOnSubscribe

在阅读了多篇博客文章和文档后,我得出结论,以下doOnSubscribe将在工作线程上执行:

Observable.just(1)
            .observeOn(Schedulers.io())
            .doOnSubscribe(__ -> Log.d("Testing", "Testing")) // Shouldn't this be on worker thread?
            .subscribe();
Run Code Online (Sandbox Code Playgroud)

但是在调试之后,我看到doOnSubscribe在主线程上执行了.我认为doOnSubscribe它与其他运算符类似,因此在与subscribeOn和相结合时具有类似的线程行为observeOn.

我错过了什么?如何将doOnSubscribe执行移至后台线程?

android reactive-programming rx-java2

6
推荐指数
2
解决办法
1480
查看次数

subscribeOn Android UI线程

我是RxJava的新手,我想我可能会忽略一些非常基本的东西.所以我创建了Observable一个像这样执行长时间运行的I/O任务.现在我想确保订阅者在Android UI线程上收到其结果:

Observable.create(new ObservableOnSubscribe<Device>() {
    @Override
    public void subscribe(@io.reactivex.annotations.NonNull final ObservableEmitter<Device> e) throws Exception {
        //Long running task
    }
}).subscribeOn(Schedulers.io())
Run Code Online (Sandbox Code Playgroud)

如您所见,我已执行了长时间运行的任务Schedulers.io().如何切换回Android UI线程?

android reactive-programming rx-java rx-android rx-java2

3
推荐指数
1
解决办法
2683
查看次数

合并多个单打形成可观察的

我正在编写一个Android应用程序,该应用程序需要按以下顺序执行2个查询:

  1. 向返回a的库发出请求(我们称其为RequestA)Single<List<String>> urls
  2. 基于我从RequestA收到的信息,我必须使用这些URL中的每一个向另一个库发出request(RequestB)。现在,每个RequestB返回一个Single。

现在,我将所有RequestB中的所有Single组合在一起,形成一个可观察的对象。

有点像Observable.mergedelayerror(List<Single>)。我不能这样做,因为mergedelayerror期望iterableObservableSource

我知道我可以通过实现回调并使用一些丑陋的逻辑来实现这一目标,但是我真的在寻找一种解决方案,只需使用RX提供的运算符

android rx-java

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