小编Rui*_*Rui的帖子

PageTransformer转换中的ViewPager边距

我有一个ViewPager,其中每个视图都代表卡片上的卡片.每张卡片使用ViewPager边距在边框上有阴影:

cardsViewPager.setPageMargin(getResources().getDisplayMetrics().widthPixels / 20);
cardsViewPager.setPageMarginDrawable(R.drawable.shadow);
Run Code Online (Sandbox Code Playgroud)

它按预期工作.

但是,如果我添加一个PageTransformer,以便右侧的卡片堆叠在左侧的卡片上:

public class ScalePageTransformer implements PageTransformer {  
    private final ViewPager mViewPager;

    public ScalePageTransformer(ViewPager viewPager) {
        this.mViewPager = viewPager;
    }

    @Override
    public void transformPage(View page, float position) {
        if (position <= 0) {
            int pageWidth = mViewPager.getWidth();
            final float translateValue = position * -pageWidth;
            if (translateValue > -pageWidth) {
                page.setTranslationX(translateValue);
            } else {
                page.setTranslationX(0);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我是这样做的:

cardsViewPager.setPageTransformer(false, new ScalePageTransformer(cardsViewPager));
Run Code Online (Sandbox Code Playgroud)

但现在,保证金没有出现.如果我在PageTransformer上有缩小效果,我可以看到当前卡缩小的时间,可绘制的边距低于屏幕上的当前卡.这是一张描述正在发生的事情的图片:

图片

红卡顶部正在从右向左滑动蓝卡.由于红牌有一个比例变换,我们可以看到它背后的黑色可绘制.

有没有办法强制将保证金绘制在红牌之上?这不应该是默认行为吗?

android android-viewpager

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

更新到 Gradle 4.2.0 后,单元测试中出现清单占位符错误

将 'com.android.tools.build:gradle' 从版本 4.1.3 更新到 4.2.0 后,我开始收到一个错误,即在运行单元测试时,'manifestPlaceholders' 不再合并到清单中。当我运行应用程序时,一切正常。它只是在运行测试时失败。

defaultConfig {
    (...)
    manifestPlaceholders = [
            myPlaceholder1: "some_value_1",
            myPlaceholder2: "some_value_2"
    ]
}
Run Code Online (Sandbox Code Playgroud)

“test”文件夹中的任何单元测试现在都失败并显示以下消息:

> Task :myLib:processDebugUnitTestManifest FAILED
/myProject/source/android/myProject/build/intermediates/tmp/manifest/test/debug/manifestMerger684952061703372993.xml Error:
    Attribute attribute1 at manifestMerger684952061703372993.xml requires a placeholder substitution but no value for <myPlaceholder1> is provided.
/myProject/source/android/myProject/build/intermediates/tmp/manifest/test/debug/manifestMerger684952061703372993.xml Error:
    Attribute attribute2 at manifestMerger684952061703372993.xml requires a placeholder substitution but no value for <myPlaceholder2> is provided.
Run Code Online (Sandbox Code Playgroud)

我不得不再次降级到 4.1.3 版。任何人都有任何解决方案?

android android-gradle-plugin

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

在Android中存储Facebook Credential以获取Google Smart Lock密码

将Facebook凭证存储在Google智能锁密码中

我能够在Smart Lock密码中存储基本的用户名/密码凭据.Google凭据有大量文档和示例:

GoogleSignInAccount gsa = signInResult.getSignInAccount();
Credential credential = new Credential.Builder(gsa.getEmail())
        .setAccountType(IdentityProviders.GOOGLE)
        .setName(gsa.getDisplayName())
        .setProfilePictureUri(gsa.getPhotoUrl())
        .build();
Run Code Online (Sandbox Code Playgroud)

但到目前为止,我无法存储Facebook凭据.它应该是类似的东西.但到底是什么?或者是完全不同或不支持的东西?

Credential credential = new Credential.Builder(<what goes here?!>)
        .setAccountType(IdentityProviders.FACEBOOK)
        .setName(<and here?>)
        .setProfilePictureUri(<is this necessary?>)
        .build();
Run Code Online (Sandbox Code Playgroud)

android google-smartlockpasswords

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

重定向后,Android WebView 会删除 URL 中 # 之后的所有内容

显然,散列之后的所有内容都称为“编码片段”。Uri.getEncodedFragment() 返回此字符串。

我的用例是这样的。给定一个网址:

url = "https://first/#/second"
Run Code Online (Sandbox Code Playgroud)

如果我做:

webView.loadUrl(url);
Run Code Online (Sandbox Code Playgroud)

WebView 删除哈希符号后的所有内容,使用修改后的 URL 发出请求:“ https://first/

关于如何在请求中传递完整 URL 的任何想法?

编辑:

我认为这与一个众所周知的重定向问题有关: URL Fragment and 302 redirects

任何人都有任何适用于Android的解决方案?

android webview

6
推荐指数
0
解决办法
426
查看次数

无法在WorkManager中设置自定义工作服务器

我使用此代码设置我自己的工厂工厂:

val daggerWorkerFactory = DaggerWorkerFactory(toInjectInWorker)

val configuration = Configuration.Builder()
        .setWorkerFactory(daggerWorkerFactory)
        .build()

WorkManager.initialize(context, configuration)
Run Code Online (Sandbox Code Playgroud)

执行此代码后,我可以获取WorkManager实例:

val workManager = WorkManager.getInstance()
Run Code Online (Sandbox Code Playgroud)

问题是,对于在此之后创建的每个工人,我的工厂从未使用过.而是使用默认工厂.

我可以在API文档中看到方法"WorkManager.initialize"有一个注释:

在清单中禁用androidx.work.impl.WorkManagerInitializer

我找不到任何有关如何执行此操作的信息.这是在一些旧版本的WorkManager上,他们忘了从文档中删除或这是否真的有必要?如果是这样,怎么样?

android android-workmanager

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