Android 在ListView中使用时,可选文本视图不起作用
为了启用文本选择和自动链接功能,我为Xamarin表单标签控件创建了自定义渲染器。它工作得很好。但当我在ListView中使用控件时,它不会触发选择模式。当我长按文本时,我在输出窗口中看到以下消息 W/TextView(2440):TextView不支持文本选择。操作模式已取消 关于如何在ListView中实现这一点,有什么想法吗 下面是我对该控件的实现 PCL中的控件定义Android 在ListView中使用时,可选文本视图不起作用,android,listview,xamarin,textview,xamarin.android,Android,Listview,Xamarin,Textview,Xamarin.android,为了启用文本选择和自动链接功能,我为Xamarin表单标签控件创建了自定义渲染器。它工作得很好。但当我在ListView中使用控件时,它不会触发选择模式。当我长按文本时,我在输出窗口中看到以下消息 W/TextView(2440):TextView不支持文本选择。操作模式已取消 关于如何在ListView中实现这一点,有什么想法吗 下面是我对该控件的实现 PCL中的控件定义 public class LinkLabel:Label { } Android自定义渲染器 clas
public class LinkLabel:Label
{
}
Android自定义渲染器
class LinkLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
if (Control != null)
{
Control.AutoLinkMask = Android.Text.Util.MatchOptions.All;
Control.SetTextIsSelectable(true);
Control.Focusable = true;
Control.FocusableInTouchMode = true;
//line below was required to make autodetected links clickable when used inside a ListView. Worked fine outside ListView without this line.
Control.MovementMethod = LinkMovementMethod.Instance;
}
}
}
}
类LinkLabelRenderer:LabelRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(例如NewElement!=null)
{
if(控件!=null)
{
Control.AutoLinkMask=Android.Text.Util.MatchOptions.All;
Control.SetTextIsSelectable(true);
Control.Focusable=true;
Control.FocusableInTouchMode=true;
//当在ListView中使用时,需要使用下面的行来使自动检测到的链接可单击。在ListView之外没有这一行时工作正常。
Control.MovementMethod=LinkMovementMethod.Instance;
}
}
}
}
这就是我的xaml查找ListView的方式,我在ViewCell中使用LinkLabel控件
<ListView x:Name="NotesListView"
ItemsSource="{Binding Notes}"
HasUnevenRows="True" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Spacing="4"
VerticalOptions="CenterAndExpand" >
<!--Notes-->
<Controls:LinkLabel Text="{Binding Notes}"
Style="{StaticResource ListItemHeader}"/>
<Label Text="{Binding FormattedDetails}"
Style="{StaticResource ListItemDetail}"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我已经使用了你的代码,我可以使用。请参考我的@MikeMa谢谢,我下载了你的repo,并在Kitkat和棒棒糖模拟器上试用了它。它不起作用。但过了一段时间,我看到它开始工作了。然后我意识到一个有趣的模式;标签上的选择仅在单击条目控件后生效。但是,如果您不与入口控件交互并尝试选择标签,它将无法工作。你介意检查一下你是否看到同样的行为吗。你可以尝试删除入口控制,看看是否有效,还有你在哪个安卓版本上试用过这个?我在安卓6.0API级别23和安卓5.0API级别21上试用过,效果很好。只需点击链接标签,so网站就会打开。这两个模拟器都是google emulator,而不是xamarin emulator。如果您不介意,我可以在答案中添加gif图片。@MikeMa问题不在于链接,链接工作正常。这个问题是我无法在长按文本视图中选择文本。