小编yoo*_*hok的帖子

如何使用 Android Jetpack Compose 布局 Row 上的所有项目

我正在尝试在我的应用程序中使用 Compose。

我想画一个像下面这样的用户界面。

它有带有开关的标题和说明。

在此输入图像描述

我的代码在这里:

@Composable
fun Switch2Lines(
    @StringRes title: Int,
    @StringRes desc: Int
) {
    Row(
        verticalAlignment = Alignment.CenterVertically,
    ) {
        Column {
            Text(
                text = "Title",
                modifier = Modifier.padding(top = 16.dp),
                fontSize = 18.sp
            )
            Text(text = "Desc Desc Desc Desc Desc Desc Desc Desc Desc Desc")
        }
        Switch(
            checked = true,
            onCheckedChange = {},
            modifier = Modifier.wrapContentSize()
        )
        Spacer(modifier = Modifier.padding(16.dp))
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,描述太长。所以开关的布局不正确。我加了一个SpacerSwitch的末端,但是不起作用。

我怎样才能解决这个问题?我应该使用constraintlayout-compose吗?

android android-jetpack-compose

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

Android Mockito TooManyActualInvocations

我正在使用Mockito编写测试代码。我遇到了TooManyActualInvocations错误。

org.mockito.exceptions.verification.TooManyActualInvocations: 
mockView.enableProgressBar(0);
Wanted 1 time:
-> at com.MyPresenterTest.doSomething(MyPresenterTest.kt:160)
But was 2 times. Undesired invocation:
-> at com.MyPresenter.doSomething(MyPresenter.kt:195)
Run Code Online (Sandbox Code Playgroud)

这是我的示例代码:

class MyPresenter(val view: MyView) {

    fun doSomething() {
        view.enableProgressBar(0)
        view.enableProgressBar(1)
        view.enableProgressBar(2)
        view.enableProgressBar(0)
    }

}
Run Code Online (Sandbox Code Playgroud)

这是我的测试代码:

@Test
fun doSomethingTest() {
    myPresenter.doSomething()

    Mockito.verify(mockView).enableProgressBar(0)
    Mockito.verify(mockView).enableProgressBar(1)
    Mockito.verify(mockView).enableProgressBar(2)
    Mockito.verify(mockView).enableProgressBar(0)
}
Run Code Online (Sandbox Code Playgroud)

如果我删除此行或将值从“ 0”更改为其他值,则该值不会重复。

我怎样才能解决这个问题?

junit android mockito kotlin

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

MPAndroidChart setGranularity(1.0f) 不起作用

我真的很感谢这个图书馆。我正在尝试绘制水平条形图。

但是我遇到了一个问题。我想每一点绘制图表轴。所以我使用了“setGranularity(1.0f);”

但是轴每 2 点显示一次。当我使用“setGranularity(3.0f)”或更高版本时,它工作正常。但是 1.0 不起作用。我不知道为什么。而且我能找到线索。

当“List”的大小小于 8 时,“setGranularity(1.0f)”工作正常。在此处输入图片说明

当“List”的大小大于 9 时,“setGranularity(1.0f)”不起作用。(它的工作原理类似于“setGranularity(2.0f)”。)在此处输入图片说明

我的列表大小为 13。

如何应用“setGranularity(1.0f)”?

android mpandroidchart

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

RxJava2,如何结合多个可观察的结果?

我正在开发Android应用程序.我有一个关于RxJava2的问题.这是一个例子:

我有一个用户ID列表.(1,2,3,4,5 ......)

val userIds = listOf(1, 2, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)

我想列出用户数据.要获取用户数据,我应该调用"REST API".(改造)在这种情况下,我应该要求多个.

GET/users/1

GET/users/2

GET/users/3

GET/users/4

GET/users/5

...

fun getUsers(userIds: List<String>, callback: UsersLoadedCallback) {
    var userList = List<User>()

    val userObservables = mutableListOf<Observable<User>>()
    userIds.forEach {
        userObservables.add(UserService.getUser(it))
    }

    Observable.merge(userObservables)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe {
                userList.add(it)
            }
}
Run Code Online (Sandbox Code Playgroud)

我知道这是错的.但我不知道如何解决这个问题."加入","合并","拉链"?我应该怎么做?

android kotlin rx-java retrofit rx-java2

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

我可以在Android中使用哪种XmlConverter进行改装?

我正在使用Retrofit开发一个Android应用程序。

服务器正在发送XML作为响应。所以我应该转换它。对于Json,我使用了GsonConverter。对于XMl,我想我可以使用SimpleXMLConverter。

我访问了SimpleXMLConverter的GitHub链接:https : //github.com/square/retrofit/tree/master/retrofit-converters/simplexml

我发现此消息:

不推荐使用-请切换到JAXB转换器

所以我访问了JAXBConverter的Github链接:https : //github.com/square/retrofit/tree/master/retrofit-converters/jaxb

但是我发现了以下消息:

请注意,JAXB在Android上不起作用。

嗯...我应该使用什么xml转换器?...

xml android jaxb retrofit simple-xml-converter

0
推荐指数
1
解决办法
551
查看次数

Android:如何处理WorkManager Rx 的结果?

我正在使用 WorkManager (Android Jetpack) 和 Rx 开发一个 Android 应用程序。下面是 Worker 类。

class ImageRxWorker(
    appContext: Context,
    private val workerParams: WorkerParameters
) : RxWorker(appContext, workerParams) {

    override fun createWork(): Single<Result> = Single.create<Result> { emitter -

        // do the job

        emitter.onSuccess(Result.success())
    }

}
Run Code Online (Sandbox Code Playgroud)

它工作正常,没有问题。但我想知道的是我该如何处理结果?

class MainPresenter(
    private val view: MainActivity,
    private val workManager: WorkManager = WorkManager.getInstance()
) : MainContract.Presenter {

    override fun startWork(): Completable {
        view.showToastMessage(R.string.worker_started)

        return Completable.create { emitter ->
            val uploadWorkRequest = OneTimeWorkRequestBuilder<ImageRxWorker>().build()
            workManager.enqueue(uploadWorkRequest)
            emitter.onComplete() // This is not exit immediately. …
Run Code Online (Sandbox Code Playgroud)

android kotlin rx-java rx-java2 android-workmanager

-1
推荐指数
1
解决办法
3399
查看次数