I was exploring Jetpack compose by trying a few widgets like Image and EditText.
For text input, it has EditableText
. I have tried below code but it is not showing anything in UI
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
loadUi()
}
}
@Composable
fun loadUi() {
CraneWrapper {
MaterialTheme {
val state = +state { EditorState("") }
EditableText(
value = state.value,
onValueChange = { state.value = it },
editorStyle = EditorStyle(
textStyle = TextStyle(
fontSize = (50f)
)
)
)
}
}
}
}
What I am missing here? Any help would be appreciated!
To read value entered in TextField in Android Compose, declare a variable, and assign this variable the value in the TextField whenever there is a change in the value. The same process holds for reading value entered in OutlineTextField composable.
As stated in Gabriele Mariotti's answer, this is the right way to do it:
var text by rememberSaveable { mutableStateOf("Text") }
TextField(
value = text,
onValueChange = {
text = it
},
label = { Text("Label") }
)
If however, you encounter an error that states:
Type 'TypeVariable(T)' has no method 'getValue(MainActivity, KProperty<*>)' and thus it cannot serve as a delegate
Simply add these two imports to your file and you'd be good:
import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
With 1.0.x
you can the TextField
.
Something like:
var text by rememberSaveable { mutableStateOf("Text") }
TextField(
value = text,
onValueChange = {
text = it
},
label = { Text("Label") }
)
Additional details:
https://developer.android.com/jetpack/compose/text#enter-modify-text
Sorry for late answer. API was changed a bit, so your code now should look like this:
@Composable
fun loadUi() {
val state = +state { EditorModel("smth") }
TextField(
value = state.value,
onValueChange = { state.value = it },
editorStyle = EditorStyle(
textStyle = TextStyle(
fontSize = (50.sp)
)
)
)
}
Also you could miss widget, because it doesnt have default background and is almost invisible by default if you have empty string
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With