在ListView中使用时,可选TextView不起作用

时间:2017-03-02 21:06:57

标签: android listview xamarin textview xamarin.android

我为Xamarin Forms Label控件创建了自定义渲染器,以启用文本选择和自动链接功能。它很棒。但是当我在ListView中使用Control时,它不会触发选择模式。当我长按文本时,我在输出窗口中看到以下消息。

  

W / TextView(2440):TextView不支持文本选择。行动模式已取消。

有关如何在ListView中进行此操作的任何想法吗?

以下是我对此控件的实现。

PCL中的控制定义

 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;

            }
        }
    }

}

这就是我的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>

0 个答案:

没有答案