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
                }
            }
  });

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...