选择所有文本时的 Xamarin 条目光标位置

Posted

技术标签:

【中文标题】选择所有文本时的 Xamarin 条目光标位置【英文标题】:Xamarin Entry Cursor Position when Selecting All Text 【发布时间】:2021-12-21 17:35:46 【问题描述】:

当我的输入控件获得焦点时,我会选择所有文本。当文本超过入口控件的宽度时,文本的开头将被截断 - 如下图所示:

Beginning truncated

但是,我希望尾部被截断,如下所示:

Tail truncated

<Entry x:Name="entryA" Focused="entry_Focused"/>

private void entry_Focused(object sender, FocusEventArgs e)

    entryA.CursorPosition = 0;
    entryA.SelectionLength = entryItem.Text.Length;

【问题讨论】:

Xamarin 只是告诉本机(androidios)小部件选择是什么。查看 Android 文档,我看不出有任何方法可以在 Android 下控制这种行为。我怀疑 iOS 文本框也缺少这个。 (虽然我没看。)如果 ios 或 android 确实有办法做到这一点,那么答案就是在每个平台上编写一个“自定义渲染器”来设置这样的选项。也许其他人可以在各个平台上找到一种方法来做到这一点。但我对此表示怀疑。 【参考方案1】:

通过使用Entry的PropertyChanged方法,可以在数据框中的数据发生变化时进行操作。

我写了一个小例子供大家参考:

这里是 xaml 代码:

<StackLayout>
    <Entry x:Name="entryA" WidthRequest="100" HorizontalOptions="CenterAndExpand" PropertyChanged="entryA_PropertyChanged"></Entry>
</StackLayout>

这是后台代码:

public partial class MainPage : ContentPage

    public int len  get; set; 
    public MainPage()
    
        InitializeComponent();
    

    private void entryA_PropertyChanged(object sender, PropertyChangedEventArgs e)
    
        var en = sender as Entry;
        if (en.Text != null && len != en.Text.Length) 
        
            entryA.CursorPosition = 0;
            len = en.Text.Length;
        
    

【讨论】:

问题解决了吗?

以上是关于选择所有文本时的 Xamarin 条目光标位置的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xamarin.android 中更改条目光标颜色

ASP.NET / HTML - 使用光标时的文本区域光标位置

如何从 RichTextBox 中的光标位置选择前一个字符

如何在文本区域标签中的特定光标位置插入选择标签下拉值作为文本片段?

识别不同文本区域中的光标位置并在列表框中选择项目时插入文本

在光标位置将文本插入文本区域时出现 IE 问题