【问题标题】:SelectAll on EditText with Two-Way Data Binding具有双向数据绑定的 EditText 上的 SelectAll
【发布时间】:2018-11-20 13:02:37
【问题描述】:

我有一个带有片段的活动...在这个片段中,我在 EditText 中使用双向 DataBinging。此 EditText 绑定到对象的 Double 属性,因此,我必须实现一个 InverseMethod 来转换 String -> Double 和 Double -> String...

在我的 EditText 中,我配置了 android:selectAllOnFocus="true",并且我也在片段的 onCreateView 方法上强制它:edQtd.selectAll()

问题是,当片段出现时,EditText 有焦点,但没有选择文本,而是光标在第一个数字之前...

我希望它显示所有选定的文本...

尝试不使用inverse的方法,只是连接一个空的String,但是结果是一样的……

从我看到的调试来看,生成的绑定类在片段创建后设置文本(在我手动调用 edQtd.selectAll() 之后),删除选择...

有什么办法解决吗?

编辑: 现在我解决了它添加一个 TextChangedListener 到 EditText,我只在第一次更改文本时选择所有文本:

edQuantidade.addTextChangedListener(new TextWatcher() {
        @Override
        public void afterTextChanged(Editable s) {
            if(selectAllEdQtdText) {
                edQuantidade.selectAll();
                setSelectAllEdQtdText(false);
            }
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }
    });

【问题讨论】:

  • 你在 Fragment 的 onResume() 中尝试过edQtd.selectAll() 吗?
  • 现在试过了,Khemraj,但没有成功。生成的绑定类的代码在 OnResume 方法之后运行...我通过添加一个 TextChangedListener 来解决它,它只在第一次更改后选择所有文本,但我不喜欢这个解决方案...
  • 您只想在视图打开后选择 EditText 文本?
  • 是的,我想在打开视图后立即选择 EditText 的所有文本

标签: android data-binding android-edittext selectall two-way-binding


【解决方案1】:

在 Layout 的 EditText 上添加以下属性。

<EditText
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:selectAllOnFocus="true"
    />

并从代码中删除edQtd.selectAll()

编辑

因为没有解决方案有效。这将起作用,因为这将在延迟后触发 selectAll。在绑定中设置模型后添加。

    new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
        @Override
        public void run() {
            edQtd.selectAll();
        }
    }, 500);

【讨论】:

  • 我试过了,还是不行,当数据绑定生成类执行setText时,selecion被删除了...
  • 从哪里获取数据来设置布局?
  • 我在 onCreateView 方法中创建并绑定对象
  • 现在它工作了,但我仍然更喜欢我找到的另一个解决方案,你不必等待 500 毫秒来选择文本......我将用这个“解决方案”编辑我的问题我找到了...无论如何,谢谢
  • 不会在每次用户修改文字时都选择EditText吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多