【问题标题】:Typing to two edittext fields at same time同时键入两个编辑文本字段
【发布时间】:2012-10-05 11:01:46
【问题描述】:

如何使用 android 上的软键盘弹出窗口在两个编辑文本框中键入内容。

如果我在一个框中输入例如单词“猫”,那么它会显示在另一个框中。

如果无法做到这一点,有没有办法在屏幕上的其他地方显示输入框中的每个字母?

【问题讨论】:

    标签: android android-edittext android-softkeyboard


    【解决方案1】:

    尝试TextWatcher 像这样为您的一个 EditText

    firstedittext.addTextChangedListener(new TextWatcher() {
    
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                secondedittext.setText(firstedittext.getText() + "");
            }
    
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {                
            }
    
            @Override
            public void afterTextChanged(Editable s) {
            }
        });
    

    希望帮助

    编辑

    在您有其他导入的活动中添加这些行

    import android.text.Editable;
    import android.text.TextWatcher;
    

    【讨论】:

    • 谢谢,但我在 textwatcher 上遇到错误“类型 new textwatcher(){} 必须实现继承的抽象方法 Textwatcher.afterTextchanged(Editable)”和“无法解析可编辑类型”请帮助我
    • 感谢 Deepak 我遇到的另一个问题,虽然我在底部有一个编辑文本,而我在顶部输入了第一个,问题是我有一个滚动视图 xml,当我键入它会自动从屏幕底部滚动到顶部,我不希望这样做,我尝试从顶部移除焦点,但这意味着我无法键入该框,移除焦点确实会阻止自动滚动,你知道我可以在你给我的代码中阻止自动滚动发生吗?
    • 在你的 manifest.xml 中添加这个属性到你的 Activity android:windowSoftInputMode="adjustPan" 希望帮助
    • 不幸的是,adjustpan 会阻止所有滚动视图滚动:(
    【解决方案2】:

    为您的EditTexts 实现TextWatcher。现在在其中,获取 Editable 并将其设置为 Other EditText。

      EditText edit1=new EditText(this);
        EditText edit2=new EditText(this);
    
        edit1.addTextChangedListener(new TextWatcher() {
    
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                edit2.setText(s);
    
            }
    
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub
    
            }
    
            public void afterTextChanged(Editable s) {
    
    
            }
        });
    

    【讨论】:

    • 这里每次新字符都会替换前一个字符。检查一下
    • 当用户计时新字符时,它只会替换旧字符
    • 谢谢,但我在 textwatcher 上遇到错误“类型 new textwatcher(){} 必须实现继承的抽象方法 Textwatcher.afterTextchanged(Editable)”和“无法解析可编辑类型”请帮助我
    【解决方案3】:

    使用textwatcher 编辑文本。在这里您可以实现,当您在一个编辑文本中输入数据时,其他编辑文本也填充您正在输入的字符

     EditText et1 = (EditText)findViewById(R.id.edit01);
     EditText et2 = (EditText)findViewById(R.id.edit02);     
     et1.addTextChangedListener(new TextWatcher() {
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            et2.setText(et1.getText().toString());
        }
    
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {                
        }
    
        @Override
        public void afterTextChanged(Editable s) {
        }
    });
    

    【讨论】:

    • 谢谢,但我在 textwatcher 上遇到错误“类型 new textwatcher(){} 必须实现继承的抽象方法 Textwatcher.afterTextchanged(Editable)”和“无法解析可编辑类型”请帮助我
    • 试试this
    【解决方案4】:

    在一个 EditText 上使用 TextWatcher,在其中使用 EditText2.setText()

    【讨论】:

      【解决方案5】:

      实现一个TextWatcher,它会在其onTextChanged() 方法中更改EditView 或TextView 的文本。使用addTextChangeListener() 方法在源视图上设置这个观察者。

      【讨论】:

        【解决方案6】:

        这是我的逻辑:

        首先在您要输入的第一个 Edittext 上添加文本观察器

        OnCreate
        et1= (EditText)findViewById(R.id.et1);
        et2= (EditText)findViewById(R.id.et2);
        et1.addTextChangedListener(addTextWatcher);
        //now you need to add this
        
        
        TextWatcher addTextWatcher = new TextWatcher() { 
            public void beforeTextChanged(CharSequence s, int start, int count,int after) {   
        
            }  
            public void onTextChanged(CharSequence s, int start, int before,int count) {  
                NewString= et1.getText().length();
            et2.settext(NewString);
        
           }
            public void afterTextChanged(Editable arg0) {
        
            }
                };
        
            public void afterTextChanged(Editable arg0) {   
            }   
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-12-07
          • 1970-01-01
          • 1970-01-01
          • 2012-10-09
          • 2017-08-14
          • 1970-01-01
          • 2012-02-24
          相关资源
          最近更新 更多