微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 单击按钮 – Android时将焦点设置为EditText

int[] etColorId = new int[] {R.id.etColor1, R.id.etColor2, R.id.etColor3, R.id.etColor4, R.id.etColor5,
            R.id.etColor6, R.id.etColor7, R.id.etColor8, R.id.etColor9, R.id.etColor10, R.id.etColor11,
            R.id.etColor12, R.id.etColor13, R.id.etColor14, R.id.etColor15};

    for (int editText : etColorId) {
        findViewById(editText).setonFocuschangelistener(new OnFocuschangelistener() {

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                // Todo Auto-generated method stub
                v.setEnabled(false);
            }
        });
    }

    int[] btnEditId = new int[] {R.id.btnEdit1, R.id.btnEdit2, R.id.btnEdit3, R.id.btnEdit4, R.id.btnEdit5,
            R.id.btnEdit6, R.id.btnEdit7, R.id.btnEdit8, R.id.btnEdit9, R.id.btnEdit10, R.id.btnEdit11,
            R.id.btnEdit12, R.id.btnEdit13, R.id.btnEdit14, R.id.btnEdit15};

    for (int button : btnEditId) {
        findViewById(button).setonClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // Todo Auto-generated method stub
                v.setEnabled(true);
                v.requestFocus();
            }
        });
    }

嗨,大家好!我想问一下如何在点击按钮时将焦点集中到EditText上.场景是我有一堆EditTexts和Buttons.每个按钮对应一个特定的EditText.我想要的是,例如,如果我点击button1,EditText1将被聚焦.然后当我单击其他按钮时,EditText对应于该按钮将被聚焦,然后其他EditTexts将被禁用.

解决方法:

对于OnFocuschangelistener的这段代码必须进行一点修改,对于您需要对要修改的任何对象进行最终引用的匿名类,因为您要修改EditText

final int[] etColorId = new int[] {R.id.etColor1, R.id.etColor2, R.id.etColor3, R.id.etColor4, R.id.etColor5,
            R.id.etColor6, R.id.etColor7, R.id.etColor8, R.id.etColor9, R.id.etColor10, R.id.etColor11,
            R.id.etColor12, R.id.etColor13, R.id.etColor14, R.id.etColor15};

现在OnClickListener就是这样的

for (int i=0;i<btnEditId.length;i++) 
{
    final int counter=i;
    int button=btnEditId[i];
    findViewById(button).setonClickListener(new OnClickListener() 
    {

        @Override
        public void onClick(View v) 
        {

            // HERE v refers to button itself on which you clicked, 
            // you need to update get edit text so
            // based on ith position accessing the same edit as the button correspond too
            EditText edt=etColorId[counter];
            edt.setEnabled(true);
            edt.requestFocus();
            // and you are DONE!!!
        }
    });
}

更新:

 new OnFocuschangelistener() 
 {

            @Override
            public void onFocusChange(View v, boolean hasFocus) 
            {

                if(!hasFocus) 
                { // lost focus
                       v.setEnabled(false);
                }
                else
                {
                    //you are already enabling on button click
                }
            }
  });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐