小编Val*_*tin的帖子

Android - Google SignInButton 文本未居中

我想com.google.android.gms.common.SignInButton在我的一个布局中使用 a但遗憾的是,没有任何有价值的理由,按钮内的文本不想位于中心。

这是它的外观:

在此处输入图片说明

xml 非常简单,我尝试使用边距/填充/重力/...但没有任何方法可以使文本居中:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include layout="@layout/toolbar" />

    <com.google.android.gms.common.SignInButton
        android:id="@+id/button_google_sign_in"
        android:layout_width="200dp"
        android:layout_height="60dp"
        android:layout_centerInParent="true" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

编辑 :

即使有一个完全空的活动,这个按钮也不能正确显示......我疯了吗?

在此处输入图片说明

有人已经遇到过这个问题吗?

谢谢

android google-signin

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

Flutter:从本机代码生成的隔离调用插件时出现 MissingPluginException

我正在构建一个 Flutter 应用程序,当设备连接到另一个蓝牙设备时,该应用程序能够执行一些操作。这个应用程序应该可以在 Android 和 iOS 上运行,但为了简单起见,我在这篇文章中将重点关注 Android。此外,无论应用程序是在前台、后台还是被杀死,这都必须有效。

以下是该应用程序的架构:

  1. 我有一个Android 本机代码,可以通过BroadcastReceiver.
  2. 我按照本教程设置了Android 代码和 Flutter 代码之间的通信https://medium.com/@chetan882777/initiating-calls-to-dart-from-the-native-side-in-the-background -with-flutter-plugin-7d46aed32c47
  3. 当 AndroidBroadcastReceiver被蓝牙事件触发时,信息会发送到 Flutter 代码(即使应用程序处于后台或被杀死)。创建 Flutter 隔离来处理 Flutter 代码。

一切都运转良好。Flutter 代码被调用,我可以用来print(data)记录 Android 代码提供的数据。

当我想从隔离中调用任何 Flutter 插件(如sqflitepackage_info_plus、 ...)时,事情变得更加棘手。我每次都会收到此错误:

[错误:flutter/lib/ui/ui_dart_state.cc(199)] 未处理的异常:MissingPluginException(在通道 yyy 上找不到方法 xxx 的实现)

据我了解,生成的隔离无法本机运行 Flutter 插件。有一些帖子(无法理解“找不到‘Window_sendPlatformMessage’(4 个参数)”错误的 Flutter Isolate 解决方法https://github.com/flutter/flutter/issues/13937)解释了如何创建可以使用解决方法或https://pub.dev/packages/flutter_isolate等插件运行 Flutter 插件。但是,我无法使用此包创建隔离,因为隔离是从 Android 代码创建的。

你们中的一个人能告诉我如何实现这一目标吗?有没有办法从本机代码创建的隔离中使用 Flutter 插件?

预先非常感谢

dart-isolates flutter flutter-plugin

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

RxAndroid过滤器Observable <List <Item >>

我使用RxAndroid,我想过滤一个结果Observable<List<Item>>.

这是代码:

Observable<List<Item>> observable = 
Observable.create((Observable.OnSubscribe<List<Item>>) subscriber -> {
        subscriber.onNext(ItemManager.getItems());
        subscriber.onCompleted();
    });
Run Code Online (Sandbox Code Playgroud)

我想用来.filter()获取有效物品.这样做是完美的:

observable.filter(new Func1<Item, Boolean>() {
    @Override
        public Boolean call(Item item) {
            return item.isValid();
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,.filter()迫使我实现新的Func1():

observable.filter(new Func1<List<Item>, Boolean>() {
        @Override
            public Boolean call(Item item) {
        }
    });
Run Code Online (Sandbox Code Playgroud)

有人知道如何解决这个问题吗?

先感谢您 :)

android rx-java rx-android

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

带有翻新,协程和挂起功能的并行请求

我正在使用Retrofit以发出一些网络请求。我还将协同程序与“挂起”功能结合使用。

我的问题是:有没有办法改善以下代码。这个想法是并行启动多个请求,并等待它们全部完成,然后再继续执行该功能。

lifecycleScope.launch {
    try {
        itemIds.forEach { itemId ->
            withContext(Dispatchers.IO) { itemById[itemId] = MyService.getItem(itemId) }
        }
    } catch (exception: Exception) {
        exception.printStackTrace()
    }

    Log.i(TAG, "All requests have been executed")
}
Run Code Online (Sandbox Code Playgroud)

(请注意,“ MyService.getItem()”是一个“暂停”函数。)

我猜在这种情况下,有什么比foreach更好的了。

有人有主意吗?

android suspend coroutine kotlin kotlin-coroutines

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

带有 KTX 的 Android 动画

我的 Android 应用中有一些动画,我想更改代码以利用 Android KTX。可悲的是,我不太了解有关它的文档。有人可以告诉我如何在 Android KTX 的帮助下改进此代码吗?

view
    .animate()
    .translationY(view.height.toFloat())
    .setDuration(3000)
    .setInterpolator(AccelerateInterpolator())
    .setListener(object : Animator.AnimatorListener {

        override fun onAnimationStart(animation: Animator?) {}

        override fun onAnimationRepeat(animation: Animator?) {}

        override fun onAnimationCancel(animation: Animator?) {}

        override fun onAnimationEnd(animation: Animator?) {
            // Do whatever I want
        }
    })
Run Code Online (Sandbox Code Playgroud)

当然,我已经在 Gradle 文件中添加了依赖项:

implementation 'androidx.core:core-ktx:1.0.2'
Run Code Online (Sandbox Code Playgroud)

非常感谢您提前:)

android android-animation kotlin-android-extensions android-ktx

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

Firebase Android-在.setValue()时崩溃,并显示“找到名称为setGregorianChange的冲突设置器”

我正在使用FirebaseDatabase,但无法解决非常烦人的崩溃。

每当我尝试执行时: FirebaseDatabase.getInstance().getReference().child("...").push().setValue(...)

应用程序崩溃,我收到此消息:

com.google.firebase.database.DatabaseException: Found a conflicting setters with name: setGregorianChange (conflicts with setGregorianChange defined on java.util.GregorianCalendar)
at com.google.android.gms.internal.zzbqi$zza.<init>(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzi(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source)
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzaw(Unknown Source)
at com.google.firebase.database.DatabaseReference.zza(Unknown Source)
at com.google.firebase.database.DatabaseReference.setValue(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

我尝试在FirebaseDatabase中保存包含日历的对象后,开始发生此崩溃。

问题是,现在,即使我从该对象中删除了日历,应用程序仍会崩溃,并出现相同的错误。看起来有些东西已损坏,我无法使其再次正常运行。

我已经从手机上卸载了该应用程序,请在Firebase控制台中清除数据库,但这不能解决问题。

你们其中之一可以帮助我吗?

-----编辑-----

我做了一些新的测试,实际上只有当我传入的类.setValue(...)包含此方法时,应用程序才会崩溃:

public Calendar getStartTimeCalendar() {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(startTime);
    return calendar;
}
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-realtime-database

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