dans mon projet Android actuel, je dois utiliser le cadre Litho. Problème auquel je fais face maintenant est comment manipuler la clé d'entrée avec le widget de Litho EditText. (Demande de sollicitation quand la touche d'entrée sur le clavier doux est pressée) J'ai essayé setOnKeyListener sur LithoView qui contient EditText mais sans aucun effet. Donc, si quelqu'un utilise Litho avec EditText et peut aider, je serai heureux.Comment gérer entrée pressée avec Litho.Edittext
1
A
Répondre
0
Il déclenche un événement click, malheureusement aussi pour des clics réguliers.
import android.graphics.Color
import android.text.InputType
import android.util.Log
import com.facebook.litho.*
import com.facebook.litho.annotations.*
import com.facebook.litho.widget.EditText
import com.facebook.litho.widget.Recycler
import com.facebook.litho.widget.RecyclerBinder
import com.facebook.litho.widget.TextChangedEvent
import com.facebook.yoga.YogaEdge
interface OnExecuteListener {
fun onExecute(query: String)
}
@LayoutSpec
class MainComponentSpec {
companion object {
@JvmStatic
@OnCreateInitialState
fun createInitialState(c: ComponentContext, url: StateValue<String>, @Prop initialUrl: String) {
url.set(initialUrl)
}
@JvmStatic
@OnCreateLayout
fun onCreateLayout(
c: ComponentContext, @State url: String, @Prop recyclerBinder: RecyclerBinder): ComponentLayout {
return Column.create(c)
.paddingDip(YogaEdge.ALL, 16f)
.backgroundColor(Color.WHITE)
.child(urlText(c, url))
.child(getRecyclerComponent(c, recyclerBinder))
.build()
}
@JvmStatic
@OnEvent(TextChangedEvent::class)
fun onTextChanged(c: ComponentContext, @State url: String) {
Log.i("X", "tc: " + url)
}
@JvmStatic
@OnEvent(ClickEvent::class)
fun onClick(c: ComponentContext, @State url: String, @Prop executeListener: OnExecuteListener) {
executeListener.onExecute(url)
}
private fun urlText(c: ComponentContext, url: String): EditText.Builder? {
return EditText.create(c)
.text(url)
.textSizeSp(14f)
.isSingleLine(true)
.inputType(InputType.TYPE_TEXT_VARIATION_URI)
.clickHandler(MainComponent.onClick(c))
.textChangedEventHandler(MainComponent.onTextChanged(c))
}
private fun getRecyclerComponent(c: ComponentContext,
recyclerBinder: RecyclerBinder): Component<Recycler> {
return Recycler.create(c).binder(recyclerBinder).build()
}
}
}