@@ -14,28 +14,34 @@ resolution or about Context:
1414class LocalViewModel : MyViewModel {
1515 override fun getText (): DeferredText = DeferredText .Resource (R .string.someText)
1616 override fun getTextColor (): DeferredColor = DeferredColor .Attribute (R .attr.colorOnBackground)
17+ override fun getTextSize (): DeferredDimension = DeferredDimension .Attribute (R .attr.bodyTextSize)
1718}
1819
1920// API-based text and color:
2021class RemoteViewModel (private val api : Api ) : MyViewModel {
2122 override fun getText (): DeferredText = DeferredText .Constant (api.fetchText())
2223 override fun getTextColor (): DeferredColor = DeferredColor .Constant (api.fetchTextColor())
24+ override fun getTextSize (): DeferredDimension =
25+ DeferredDimension .Constant (api.fetchTextSize(), DeferredDimension .Constant .Unit .SP )
2326}
2427```
2528
2629In the view layer, resolve a deferred resource to display it:
2730``` kotlin
2831val text: DeferredText = viewModel.getText()
2932val textColor: DeferredColor = viewModel.getTextColor()
33+ val textSize: DeferredDimension = viewModel.getTextSize()
3034textView.text = text.resolve(context)
3135textView.setTextColor(textColor.resolve(context))
36+ textView.setTextSize(TypedValue .COMPLEX_UNIT_PX , deferredSize.resolveExact(context))
3237```
3338
3439With view extensions, this is even simpler. The View's own Context is used to resolve any deferred
3540resource types:
3641``` kotlin
3742textView.setText(viewModel.getText())
3843textView.setTextColor(viewModel.getTextColor())
44+ textView.setTextSize(viewModel.getTextSize())
3945```
4046
4147### Text types
0 commit comments