Anko: scope interno de aplicar, resolución de propiedad confusa
Estoy escribiendo un layout de Android usando Anko DSL. Al definir un TextView
, quería TextView
al centro, así que escribí esto:
verticalLayout { textView(R.string.txt_greeting).apply { gravity = Gravity.CENTER_HORIZONTAL // <- this should have changed the alignment textSize = 20.0f } //... }
Pero la alignment no cambió. En el depurador, vi que la gravedad está establecida para el LinearLayout
que es el TextView
de TextView
.
- Herencia genérica de Kotlin - No coincide con el tipo
- Referencia no resuelta: campo en Kotlin
- kapt - java.lang.OutOfMemoryError: límite superior de GC excedido
- Equivalente de Kotlin de String.getBytes () de Java
- Por qué ejecutar testings de kotlin tan lento en AndroidStudio 3.0
Cambiar la statement a cualquiera
textView(R.string.txt_greeting).let { it.gravity = Gravity.CENTER_HORIZONTAL }
y
textView(R.string.txt_greeting).apply { this@apply.gravity = Gravity.CENTER_HORIZONTAL }
e incluso
textView(R.string.txt_greeting).apply { this.gravity = Gravity.CENTER_HORIZONTAL }
resuelve el problema, por lo tanto, en el código original implícito, this
definitivamente se resuelve en this@verticalLayout
.
¿Por qué pasó esto?
¿Entiendo mal algo en Kotlin lambdas o es un error en Kotlin o Anko?
- Parámetros de anotación Java en Kotlin
- java.lang.IncompatibleClassChangeError después de actualizar a kotlin RC1 (1.0.0-rc-1036)
- Kotlin Unit Test siempre pasa cuando se ejecuta desde la IU de Android Studio
- Kotlin: ¿cómo devolver la instancia del service en ejecución en la carpeta?
- Spring Boot: el filter personalizado no funciona después de habilitar el autoenvío del repository
- RxJava Observable a Completable, cómo evitar toBlocking ()
- Declaraciones múltiples anidadas en Kotlin
- ¿Por qué el signo más debe estar al final de la línea en lugar de al principio en la línea siguiente?
En realidad, fue un error al determinar el scope.
El problema correspondiente se ha marcado como fijo, por lo que es probable que la corrección aparezca en la próxima versión.