2013-02-09 72 views
5

我阅读了关于如何设置要聚焦的对象的问题,但我似乎无法找到任何我想要做的答案。如何强制重点编辑文本

使用焦点监听我也做了以下内容:

Ehour.setOnFocusChangeListener(new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View arg0, boolean arg1) { 
      // TODO Auto-generated method stub 
      if (!arg1) { 
       if (Ehour.getText().length()<=0) { 
        Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show(); 
        Calendar nohour = Calendar.getInstance(); 
        Ehour.setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY))); 
Ehour.setFocusable(true); 
Ehour.requestFocus(); 


       } 
      } 
     }}); 

我曾尝试建议从如下职位:

我看到这篇文章,但使用这些建议也似乎不工作: How to set focus on a view when a layout is created and displayed?

我的目标是,当编辑文本焦点丢失时,如果给定的条目无效,我需要回到它。

此外按照由Bill莫特给出的建议我也尝试:

Ehour.setOnFocusChangeListener(new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View arg0, boolean arg1) { 
      // TODO Auto-generated method stub 
      if (!arg1) { 
       if (Ehour.getText().length()<=0) { 
        Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show(); 
        Calendar nohour = Calendar.getInstance(); 
        Ehour.setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY))); 

        ((EditText)arg0).requestFocus(); 

       } 
      } 
     }}); 

**编辑** 我连requestFocus()方法之前加入下面的行:

((EditText)arg0).setFocusable(true); 

***编辑****

从这篇文章中尝试:Stop EditText from gaining focus at Activity startup

以下变化: 。在第一种布局标头的布局我说:

android:id="@+id/enterdata" 
android:descendantFocusability="beforeDescendants" 
android:focusableInTouchMode="true" 

然后在OnChangeFocusListener我这样做:

Ehour.setOnFocusChangeListener(new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View arg0, boolean arg1) { 
      // TODO Auto-generated method stub 
      if (!arg1) { 
       if (((EditText)arg0).getText().length()<=0) { 
        Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show(); 
        Calendar nohour = Calendar.getInstance(); 
        ((EditText)arg0).setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY))); 
        findViewById(R.id.enterdata).requestFocus(); 
        ((EditText)arg0).setFocusable(true); 
        ((EditText)arg0).setFocusableInTouchMode(true); 
        ((EditText)arg0).requestFocus(); 

       } 
      } 
     }}); 

不过我还是像以前一样获得相同的行为,焦点转到的编辑文本仍然保持这种状态,但我希望焦点转到的编辑文本看上去很有针对性,但它似乎无法用作好像仍在等待聚焦。

***编辑****下面

代码按计算器上哪里谁问的问题用户遇到同样的问题,因为我发现最近的文章:

Ehour.setOnFocusChangeListener(new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View arg0, boolean arg1) { 
      // TODO Auto-generated method stub 
      if (!arg1) { 
       if (((EditText)arg0).getText().length()<=0) { 

        Calendar nohour = Calendar.getInstance(); 
        ((EditText)arg0).setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY))); 
        if (((EditText)arg0).requestFocus()) { 
         getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
         Emin.clearFocus(); 
         Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show(); 
        } 


       } 
      } 
     }}); 
+0

看这个帖子:HTTP://计算器。com/questions/1555109/stop-edittext-from-gaining-focus-at-activity-startup我尝试了我将添加到我的问题的答案 – TimCS 2013-02-10 09:10:26

+0

我甚至试图硬编码所有编辑文本框以清除焦点并将setFocusable和setFocusableInTouchMode设置为false,但行为仍然相同,它看起来像编辑文本我希望焦点聚焦,但任何键入都会在用户将移动到的编辑文本中结束!!!!!帮帮我!!!! – TimCS 2013-02-10 10:36:02

+0

它出现在这篇文章中:http://stackoverflow.com/questions/14327412/set-focus-on-edittext?rq = 1用户有同样的问题,它看起来并没有解决,但我要去尝试在这里的建议,看看他们是否为我工作 – TimCS 2013-02-10 15:27:15

回答

3

尝试arg0.requestFocus()

不知道是否View实现requestFocus()关闭我的头顶,所以你可能不得不将它施放... ((EditText) arg0).requestFocus()

+0

抱歉应该在我的问题中说过,按照你所建议的方式尝试,结果与上面提到的相同 – TimCS 2013-02-09 13:32:47

+0

这两个编辑文本的行为对我来说显得很奇怪,因为我想移回到外观的那个看起来很集中,并且似乎有一个对它的游标,但是焦点转移到的一个也似乎是相同的,即使我“点击”回到一个我想使用编辑文本,它改变不是这一个 – TimCS 2013-02-09 20:18:00

+0

它在我看来,那里似乎现在正在解决这个问题。因此,我将不得不在接受记录时进行验证检查,而不是在用户离开现场时检查它。这是在Android 2.2上,所以我不确定它是否延伸到4 – TimCS 2013-02-12 12:02:13

0
new OnEditorActionListener(){ 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     editText.requestFocus(); 
     //used ******* return true ****** 
     return **true**; 
    } 
} 
0

我有同样的问题,这里的代码,我用来解决:

EditText editText = (EditText) findViewById(R.id.myTextViewId); 
editText.requestFocus(); 
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); 

最好的问候,