小编cjp*_*tin的帖子

Label Xamarin.Forms 中的可点击 HTML 超链接

我正在尝试使 xaml 标签中的 HTML 超链接可单击。我创建了一些类,这些类从 API 获取包含 HTML 的字符串,并在 Android 和 iOS 中的自定义标签渲染器中将其正确渲染为 HTML。为了更好地理解我的困境,有必要解释一下我的使用范围。

在我的应用程序中,我有一个消息传递组件,它仅使用 API 来从网站上发布和获取对话,该网站主要用于更好地帮助我们的用户,因为我们的办公室因冠状病毒而关闭。网站上的消息中心允许像网络论坛帖子一样复杂的文本格式,例如粗体、斜体、超链接等。

为了在移动设备上正确显示此内容,我必须创建一个自定义标签渲染器,它将采用带有 HTML 标签的字符串并将其正确显示为消息正文。这是一个足够简单的任务。

问题在于,消息有时可能具有超链接,当前显示为正确的链接,但当用户尝试单击链接时,列表项会注册点击,而不是标签或标签内的 html 链接。

预期结果是,当用户单击列表中标签内的超链接时,它将在设备默认浏览器中打开该超链接。

我知道一种解决方案可能是解析消息正文中的任何链接,创建链接列表,然后动态地将跨度添加到标签,每个标签都有自己的手势识别器,但这对我来说是不可能的,因为超链接有时会在对话中途出现。消息正文的示例可以是:

“您好,用户,请访问此链接登录您的帐户。”

我知道有比这更好的方法来创建消息应用程序,但移动端的主要目的是让用户更容易地访问员工的回复,以及对员工消息的简单聊天回复。工作人员将专门使用该网站来回复用户,并可以利用复杂的编辑器更好地帮助用户。

谢谢。编辑: 对话示例

在上面的示例中,末尾的链接不可点击。当我单击链接时,整个列表视图项目都会突出显示,就好像该 ui 元素的优先级高于其中的标签。

相关代码:

<ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <Frame
                        Margin="5"
                        Padding="0"
                        BorderColor="LightGray"
                        CornerRadius="15"
                        HasShadow="False">
                        <StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
                            <StackLayout
                                Padding="5"
                                BackgroundColor="#f5f5f5"
                                Orientation="Horizontal">
                                <Label
                                    Margin="5,2.5,5,2.5"
                                    BackgroundColor="Transparent"
                                    FontAttributes="Bold"
                                    FontSize="Small"
                                    HorizontalOptions="FillAndExpand"
                                    HorizontalTextAlignment="Start"
                                    Text="{Binding SentBy}"
                                    TextColor="Black"
                                    VerticalOptions="FillAndExpand" />
                                <Label
                                    Margin="5,2.5,5,2.5"
                                    BackgroundColor="Transparent"
                                    FontAttributes="Bold"
                                    FontSize="Small"
                                    HorizontalOptions="FillAndExpand"
                                    HorizontalTextAlignment="End"
                                    Text="{Binding Sent}"
                                    TextColor="Black"
                                    VerticalOptions="FillAndExpand" />
                            </StackLayout>
                            <StackLayout Padding="5" Orientation="Horizontal"> …
Run Code Online (Sandbox Code Playgroud)

html c# cross-platform xamarin.forms

5
推荐指数
1
解决办法
5230
查看次数

标签 统计

c# ×1

cross-platform ×1

html ×1

xamarin.forms ×1