android – 对Jelly Bean的TextView的requestFocus缓慢 - 代码日志

android – 对Jelly Bean的TextView的requestFocus缓慢

我正在开发一个具有4个文本字段用于输入数据的应用程序,当将焦点从一个移动到另一个时,我遇到了一个性能问题。当一个字段输入了一个字符时,我使用addTextChangedListener来监视文本并将焦点移动到下一个文本字段。这是在4.1.1之前的Android版本上正常工作,但是从4.1.1开始测试之后,当焦点出现在下一个字段之前按下一个键时会出现明显的滞后。这意味着如果用户快速键入,按键可能会丢失。

我有一个简单的应用程序使用以下代码

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    one = (EditText)findViewById(R.id.editText1);
    two = (EditText)findViewById(R.id.editText2);

    one.addTextChangedListener(new TextWatcher() {


        @Override
        public void afterTextChanged(Editable s) {
            two.requestFocus();

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            // TODO Auto-generated method stub

        }
    });
}

这突出了这个问题。当在基于4.0.4的设备上运行时,一切都很好,但在4.1.1上,需要一段时间来移动焦点。

我已经测试了这两个不同的三星Galaxy s3的4.0.4和一个4.1.1。

有没有人看到这个?

非常感谢

保罗

我不知道是否有一个解决方案的问题…但我可能有一个“黑客”,给出一个替代解决方案,而问题存在:

>将EditText放在屏幕之外。 (我通常使用RelativeLayout将其设置在右边距的右侧)。
>将onTouchListener设置为可见的EditText(并将EditText设置为不可点击)。 onTouchListener应该把焦点放到隐藏的EditText中。
>在隐藏的EditText中设置一个addTextChangedListener,对于添加或删除的每个字符,可以对可见的EditText进行适当的更改。

例:

如果我有4个带有ID的PIN的EditText:A,B,C和D,并且屏幕上显示ID为隐藏的EditText:

每当我收到第一个隐藏的字符,我写下A.

每当我收到隐藏的第二个字符写我B.

每当我收到隐藏的第二个字符的删除我删除在B.

我在一个应用程序上做类似的事情,没有问题。

http://stackoverflow.com/questions/13160352/requestfocus-for-textview-on-jelly-bean-slow

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:android – 对Jelly Bean的TextView的requestFocus缓慢