我有一个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上有缩小效果,我可以看到当前卡缩小的时间,可绘制的边距低于屏幕上的当前卡.这是一张描述正在发生的事情的图片:
红卡顶部正在从右向左滑动蓝卡.由于红牌有一个比例变换,我们可以看到它背后的黑色可绘制.
有没有办法强制将保证金绘制在红牌之上?这不应该是默认行为吗?
将 '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 版。任何人都有任何解决方案?
将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) 显然,散列之后的所有内容都称为“编码片段”。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的解决方案?
我使用此代码设置我自己的工厂工厂:
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上,他们忘了从文档中删除或这是否真的有必要?如果是这样,怎么样?