| /* |
| * Copyright 2020 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package androidx.compose.foundation.text.samples |
| |
| import androidx.annotation.Sampled |
| import androidx.compose.runtime.Composable |
| import androidx.ui.core.Modifier |
| import androidx.compose.foundation.Box |
| import androidx.compose.foundation.Text |
| import androidx.compose.foundation.background |
| import androidx.compose.ui.graphics.Color |
| import androidx.compose.foundation.layout.fillMaxSize |
| import androidx.compose.foundation.text.InlineTextContent |
| import androidx.compose.ui.text.Placeholder |
| import androidx.compose.ui.text.PlaceholderVerticalAlign |
| import androidx.compose.ui.text.annotatedString |
| import androidx.compose.foundation.text.appendInlineContent |
| import androidx.compose.ui.unit.em |
| |
| @Sampled |
| @Composable |
| fun InlineTextContentSample() { |
| val text = annotatedString { |
| append("Hello") |
| appendInlineContent("inlineContent", "[myBox]") |
| } |
| |
| val inlineContent = mapOf( |
| Pair( |
| // This tells the [CoreText] to replace the text annotated with "InlineContent" with |
| // the composable given in the [InlineTextContent] object. |
| "InlineContent", |
| InlineTextContent( |
| // Placeholder tells text layout the expected size and vertical alignment of |
| // children composable. |
| Placeholder( |
| width = 0.5.em, |
| height = 0.5.em, |
| placeholderVerticalAlign = PlaceholderVerticalAlign.AboveBaseline |
| ) |
| ) { |
| // This [Box] will fill maximum size, which is specified by the [Placeholder] |
| // above. Notice the width and height in [Placeholder] are specified in TextUnit, |
| // and are converted into pixel by text layout. |
| Box(modifier = Modifier.fillMaxSize().background(color = Color.Red)) |
| } |
| ) |
| ) |
| |
| Text(text = text, inlineContent = inlineContent) |
| } |