Tag: anko

安科:适用的内部范围,混淆财产的决议

我正在使用Anko DSL编写Android布局。 在定义一个TextView ,我想让它中心对齐,所以我这样写: verticalLayout { textView(R.string.txt_greeting).apply { gravity = Gravity.CENTER_HORIZONTAL // <- this should have changed the alignment textSize = 20.0f } //… } 但是队列并没有改变。 在调试器中,我看到重力是为TextView的父LinearLayout设置的。 将语句更改为 textView(R.string.txt_greeting).let { it.gravity = Gravity.CENTER_HORIZONTAL } 和 textView(R.string.txt_greeting).apply { this@apply.gravity = Gravity.CENTER_HORIZONTAL } 乃至 textView(R.string.txt_greeting).apply { this.gravity = Gravity.CENTER_HORIZONTAL } 解决了这个问题,因此在隐含的原始代码中this绝对是解决了this@verticalLayout 。 为什么会发生? 我是否误解了Kotlin lambda中的某些内容,或者是Kotlin还是Anko中的错误?

在Anko异步调用(Kotlin)中捕获异常时出错

我在一个Anko doAsync调用中使用Retrofit调用一个异步调用。 问题是,我不知道如何捕捉抛出execute()的IOException,基本上执行调用没有被调用。 如果我注释if (resultBody is T)行,并将调用放在trycatch它就像一个魅力。 有人知道为什么 doAsync { val response = call.execute() uiThread { if (response.isSuccessful) { val resultBody = response.body() if (resultBody is T) callback.onSuccess(resultBody) } } }

Kotlin / Anko防止按钮关闭警报对话框

当在Anko的警报构建器中使用positiveButton和negativeButton时,即使dismiss()没有被调用,看起来他们都会关闭对话框。 点击一个按钮后,有没有办法保持对话框打开(如果有其他类型的positiveButton / negativeButton ,那也没关系)? alert { title = "Add Board" customView { …. } positiveButton("OK") { doSomeFunction() } negativeButton("Close"){} }.show()

如何使用Anko屏蔽密码?

我意识到安科(和Kotlin)都是非常先进的,但我希望有人能够给我一点点的指导。 当然,这只是我的一个学习项目。 我有以下Kotlin代码(使用Anko),只是从示例代码中稍微修改一下: verticalLayout { padding = dip(30) val name = editText { hint = "Name" textSize = 24f } val password = editText { hint = "Password" textSize = 24f inputType = android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD } button("Login") { textSize = 26f onClick { toast("Good afternoon, ${name.text}!") } } } 一切的建设和显示,但我似乎无法得到密码editText来掩盖输入,因为我输入。我错过了什么?

kotlin java.lang.NoSuchMethodError:没有静态方法OnTouchListener

internal var mTouchlistener: View.OnTouchListener = OnTouchListener { v, event -> detector!!.onTouchEvent(event) when (event.action) { MotionEvent.ACTION_DOWN -> if (autoScroll) { stopAutoScroll() } MotionEvent.ACTION_UP -> if (autoScroll) { startAutoScroll() } else -> { } } false } 我有一个自定义视图类。 为什么会发生这种错误? 导致:java.lang.NoSuchMethodError:没有静态方法OnTouchListener(Lkotlin / jvm / functions / Function2;)Landroid / view / View $ OnTouchListener; 在类Landroid / widget / FrameLayout; […]

如何防止对话(警报)在您使用Anko触摸外部或后退时关闭

我正在用kotlin和anko创建一个警报/对话框(下面的代码),但是当你敲门或者按回来关闭它。 这是代码 alert("TITLE") { title("Text") positiveButton("Ok") { action() } }.show() 这里是如何解决方案将在Java(没有使用anko太) dialog.setCancelable(false); // for prevent on back pressed dialog.setCanceledOnTouchOutside(false); // for prevent on touching outside 任何想法如何使用kotlin和anko实现这一点? 谢谢 :)

Kotlin Anko自定义视图父范围

如果我们正在构建一个自定义视图,例如,如下所示: class FrameLayoutNormal: FrameLayout{ constructor(context: Context) : this(context, null) constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0) constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { textView{ lparams(…) } } 我们不能定义lparams,因为编译器不知道父类是谁。 如果我们将textView包装在FrameLayout中,它将起作用,并且扫描指定一个布局参数。 但在自定义视图中,父母本身就是这样。 那么我们如何才能让孩子们意识到这一点,才能使用这个扩展? 有什么办法让它工作,除了从_FrameLayout ?`扩展

为Kotlin / Anko DSL定义的ImageView设置图像时遇到问题

我正在尝试使用Kotlin和Anko的DSL来创建一个警告对话框,让用户选择一个图像,然后将其加载到ImageView中。 现在,我只是想让ImageView工作,所以我有按钮点击加载使用毕加索从URL的预选图像。 当我点击警报对话框中的按钮,我得到这个错误: kotlin.TypeCastException:null不能转换为非null类型的android.widget.ImageView 我猜是出于某种原因,ImageView没有通过findViewById加载。 有谁知道这可能是为什么? 我猜测Anko的DSL有一些奇怪的行为,我不知道。 fab.setOnClickListener { view -> alert { title = "New Post" customView { verticalLayout { val subject = editText { hint = "Subject" } imageView { id = R.id.picked_image } linearLayout { gravity = Gravity.CENTER button("Choose Photo") { onClick { Picasso.with(this@MainActivity) .load("http://SomeUrl/image.jpg") .into(findViewById(R.id.picked_image) as ImageView) } } button("Choose Image") […]

你怎么得到一个Idlingresource工作在Kotlin与协程

我的Espresso怠速资源不工作 – 它编译并运行,但不再等待足够长的时间来从“网络”返回结果。 从https://github.com/chiuki/espresso-samples/tree/master/idling-resource-okhttp开始 将主要活动转换为Kotlin – test(仍然在java中)仍然可以与OKHttpIdlingResource一起使用 转换到anko协程调用,而不是retrofit.enqueue – 测试不再起作用。 以下是MainActivity的全部新代码 import android.app.Activity import android.os.Bundle import android.widget.TextView import kotlinx.coroutines.experimental.android.UI import kotlinx.coroutines.experimental.async import org.jetbrains.anko.coroutines.experimental.bg import retrofit2.Retrofit import retrofit2.converter.moshi.MoshiConverterFactory class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) doCallAsync() } private fun doCallAsync() = async(UI) { val user = bg { getUser() } val […]

Kotlin&Anko协程:返回异步

在我们的项目中,我们需要获取一些数据(将被存储),然后再进行操作。 如果数据是在15分钟前获得的,我们必须刷新它。 我们正在使用Kotlin + Anko协程来做到这一点。 这个想法(假设数据是在某个时刻获得的)是: 该方法被调用并检查我们何时获得数据。 如果不到15分钟,请将其退回。 如果不是,请异步获取(这是一个网络操作),将其存储并返回。 由于在刷新数据之前我们不能做任何事情,刷新必须是同步的(通过网络操作本身是异步的)。 我们有这个代码: fun Context.retrieveInfo(api: Api?): User? { try { // For sake of simplification the real conditional check is removed if (time > 15) { val context = this val asyncUser = async(UI) { val obtainData: Deferred<Data?> = bg { api?.obtainData(sphelper.getDefaultUser(context)) } val obtainedData = storeAndRetrieve(obtainData.await(), […]