Tag: android

是否有可能变灰(而不仅仅是禁用)Android中的MenuItem?

在Blackberry上有同样的function,有几个不同的线程提到了这个bug (从我的分析结果来看 ,这个bug已经被解决了),但是我还没有find一个专门针对Android的bug 。 我打电话setEnabled(false)在某些MenuItems基于某些状态,但他们在外观上看起来是一样的。 我想他们以某种方式抵消,以便用户知道目前​​的选项不可用 – 有什么办法可以做到这一点?

通过订阅/取消订阅从侦听器发出项目的正确方法

在MVP架构之后,视图是一个Android活动,每个人都有自己的主持人。 作为数据存储库,我有一个图层,每次在后端发生变化时都会通知我新的数据。 存储库可以由不同的演示者使用,演示者必须在视图被销毁时销毁。 如何实现一个响应式流(每个存储库一个),演示者可以订阅和取消订阅以获取数据更新? 其他要求是流应该能够结合并应用它们的反应操作符。 我通过Firebase Firestore后端尝试了以下内容,但发现内存泄漏(活动和演示者不会被破坏)。 注意:当后端发生变化时,addSnapshotListener()回调会通知新数据。 正如您所看到的,observable是公开的(默认情况下是Kotlin),供演示者使用,用于订阅和取消订阅。 class DocumentRepository( path: List, private val model: Class) { private var documentReference: DocumentReference val observable: Observable private var emitter: ObservableEmitter? = null private lateinit var item: T init { documentReference = FirebaseFirestore.getInstance().collection(path[0]).document(path[1]) for (i in 2..path.lastIndex step 2) documentReference = documentReference.collection(path[i]).document(path[i + 1]) observable = Observable.create(this::listenChanges) […]

在自定义视图中绘制自定义视图

我正在处理自定义视图TreeView ,它将显示给定根节点的树。 我正在使用Kotlin语言。 以下是目前的部分内容: override fun onDraw(canvas: Canvas?) { super.onDraw(canvas) drawNodeAndChildren(canvas, rootNode) } /** * Draws a representation of a node and its children onto the canvas. * … */ private fun drawNodeAndChildren(canvas: Canvas, node: TreeNode, …): Int { … // Calculate coordinates of rect val top = … val bottom = … val left […]

Espresso,当NestedScrollView或RecyclerView在CoordinatorLayout中时,滚动不起作用

它看起来像CoordinatorLayout打破了Espresso的行为,如scrollTo()或RecyclerViewActions.scrollToPosition() 。 问题与NestedScrollView 对于这样的布局: … … 如果我尝试使用ViewActions.scrollTo()滚动到NestedScrollView内的任何视图,我发现第一个问题是,我得到一个PerformException 。 这是因为这个动作只支持ScrollView而NestedScrollView不能扩展它。 这个问题的解决方法在这里解释,基本上我们可以在scrollTo()复制代码,并改变约束来支持NestedScrollView 。 这似乎工作,如果NestedScrollView不是在CoordinatorLayout但只要你把它放在一个CoordinatorLayout滚动操作失败。 问题与RecyclerView 对于相同的布局,如果我将NestedScrollView替换为RecyclerView ,滚动也会出现问题。 在这种情况下,我使用RecyclerViewAction.scrollToPosition(position) 。 不像NestedScrollView ,在这里我可以看到一些滚动发生。 但是,它看起来像滚动到错误的位置。 例如,如果我滚动到最后一个位置,它将显示倒数第二,但不是最后一个。 当我将RecyclerView移出CoordinatorLayout ,滚动就像它应该的那样工作。 目前,由于这个问题,我们无法为使用CoordinatorLayout的屏幕编写Espresso测试。 任何人遇到同样的问题或知道解决方法?

Anko floatingActionButton缺失或冲突的依赖关系

下面这个稍微过时的教程 ,我卡住试图使用org.jetbrains.anko.design.floatingActionButton 。 错误是: 无法访问类“android.support.design.widget.FloatingActionButton”。 检查您的模块类路径是否存在缺失或冲突的依赖关系。 build.gradle(Project) buildscript { ext.kotlin_version = ‘1.1.50’ ext.anko_version = ‘0.10.1’ repositories { google() jcenter() } dependencies { classpath ‘com.android.tools.build:gradle:3.0.0-beta6’ classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } build.gradle(App) apply plugin: ‘com.android.application’ apply plugin: ‘kotlin-android’ apply plugin: ‘kotlin-android-extensions’ android { […]

Inflator(root = null)布局破坏和Inflator(parentView = obj)无法设置位置

为了学习Kotlin和Android,我开始一个项目。 这是一个小发射器,但现在我有一个问题。 我的问题: A)当我用root:ViewGroup null调用Inflater.inflate时,我可以通过调用viewGroup.addView(v,postion)在根上的每个位置添加我的视图。 但我的布局被破坏,我的孩子的大小有错误的宽度。 val inflater = activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater val child = inflater.inflate(resource, null, true) viewGroup.addView(child, position) B)当我用root:ViewGroup父母调用Inflater.inflate时,我有我想要的布局,但我不能在视图(List)中决定我的孩子的位置。 val inflater = activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater val child = inflater.inflate(resource, viewGroup, true) 题: 在A)有可能从父视图设置布局设置我的孩子 在B)可以在父视图中从我的孩子设置位置 布局 父母是一个GridLayout,它显示最大宽度上的图标取决于确定的列。 孩子布局 如果你知道这个项目更好的设计/解决方案。 我很高兴学习新东西并实施。 谢谢你的时间

父级保证金更改后,Android子级宽度错误

我有一个animation,我必须将cardView从水平边缘状态扩展到无边距状态。 国家如下: 折叠状态:保证金开始和结束4 dp 扩张状态:无保证金 要做到这一点,我做了以下(在Kotlin): val anim = object : Animation() { override fun applyTransformation(interpolatedTime: Float, t: Transformation?) { val thisLp = layoutParams as MarginLayoutParams val newMargin = maxHorizontalMargin – (maxHorizontalMargin * interpolatedTime).toInt() thisLp.setMargins(newMargin, 0, newMargin, 0) this.layoutParams = thisLp }} 一切都按预期工作,除非视图完全展开,则子项的全宽(定义为MATCH_PARENT)不是全角,而是在开始和结束时都有一个边距。 我的赌注是,作为最初的父视图状态有边距,并且只有在展开之后,边距消失了,绘制的儿童的最大宽度才会更新,因此会缩短预期。 如何克服这一点?

Facebook的Android生成密钥哈希

试图创建一个与Facebook集成的Android应用程序,我已经到了你必须生成一个关键的哈希文件的文档的一部分,它指定运行下面的代码 keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64 当我在终端运行这个时,我得到一个密钥库被篡改或密码错误的错误, 我只是想生成我的密钥哈希值 任何人都可以指向正确的方向吗?

如何在RoomDatabase中存储Enum的ArrayList

我的问题是如何存储 List 在RoomDatabase中,到目前为止我找不到答案。

Android的TextInputLayout提示重叠EditText提示

我正面临一个奇怪的问题,我有一个InputTextLayout和一个EditText在里面,我试图实现这样的事情(如下图所示)(图片来自材料设计指导: https : //material.io/guidelines/components /text-fields.html#text-fields-layout ),其中有两个单独的提示。 我正在通过添加android:提示到这两个布局。 这工作正常,但是当焦点离开这个时候,“标签”向下移动并且重叠“占位符”文本。 (只有当用户没有给出任何输入和编辑文本是空的 – 两个提示重叠)。 任何指针如何解决这个问题? 作为一个要求,我需要两个提示在那里,“标签”不应该移动焦点的变化。 这两个提示应该保持在他们的位置上