requestFocus的不适合的EditText正常工作(requestFocus doesn&#

2019-07-30 05:14发布

大量的时间花在解决问题,它看起来很容易,但我真的累了,无法找到解决方案。 我有一个活动,活动有4个的EditText组件,其中2个具有弹出菜单(AlertDialog),它包含的列表中,下一个 - 是编辑无效,最后一个 - 是可编辑的,而应该表现出软键盘,当用户攻就可以了。

另外,我的根的LinearLayout具有的LinearLayout包含内部RelativeLayout的。 最后一个是需要AdvBanner。 最后的LinearLayout(RelativeLayout的)对齐到根布局的底部。

XML的描述它的一部分:

  <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:layout_gravity="bottom"
      android:focusable="false"
      android:focusableInTouchMode="false" 
      android:gravity="bottom">
  <RelativeLayout 
      android:id="@+id/AdvLayoutReserveArea" 
      android:layout_width="fill_parent" 
      android:layout_height="50dp" 
      android:background="#FFFFFF"
      android:focusable="false"
      android:focusableInTouchMode="false" 
      android:gravity="bottom" /> 
  </LinearLayout>

当活动开始,可编辑的EditText一直注重与绿色边框和光标闪烁。 几秒钟走后,AdvBanner加载和显示。 当它发生时,可编辑的EditText失去焦点..从这一刻开始,我的生活就像一场噩梦。

让我们一步一步看。

问题1.如果在这一刻 (进阶时加载和显示)用户通过软键盘编辑一个EditText领域,焦点将丢失,边境采取了灰色 ,并且如果用户继续键入文本没有结果-符号不印刷(CURSOR中的EditText过丢失)。

我认为,任何用户都会感到厌烦 - 当你键入文字,光标是无效的,因为在后台一些进阶被加载,并把它聚焦自我。

到被装载时进阶解决这个问题,在方法(示出一个)我尝试通过requestFocus的方法来备份集中手动的EditText。

public void onAdLoaded() 
    {
// TODO Auto-generated method stub
// add app specific code for this event here...
// called when an ad is successfully displayed on device            
    CountEdit1.requestFocus();
}

是的,光标返回的EditText字段,如果软键盘处于活动状态,用户仍然可以输入文字,但现场的EditText边境留下灰色...

注:其实我不知道关于集中的EditText的绿色和灰色边框之间的差别。绿色通常是当用户敲击它,灰色,也许,当我们要手动请求焦点(使用requestFocus()方法等)

问题2(作为溶剂化问题#1的结果)。 软键盘关闭后,如果编辑的EditText字段的用户点击,它需要专注和光标出现内,但再次显示软键盘没反应! 它的攻不显示软键盘,但看起来像在编辑栏复印模式 - 当用户可以选择文本和剪切/复制到剪贴板。

我的目标很容易先看看。 我只是想保存光标和重点为可编辑的EditText字段(CountEdit1),同时显示软键盘和用户输入一些文字。 和正常的反应,当用户敲击的EditText - 因为通常情况下,只显示我的软键盘!

我读了所有的问题在这里,我结合不同的方法(clearFocus,requestFocusFromTouch等),只是没有足够的时间和空间来描述所有我试图做的解决这个问题。 存在的主要问题如上所述。

希望帮助和解决问题...在此先感谢..

Answer 1:

我们的目标是解决了,解决办法是比我想象的更容易。 问题#2是通过使用的onClick()方法固定。 充分条件出现使用两个clearFocus()和requestFocus()方法方法软键盘。

  CountEdit1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { CountEdit1.clearFocus(); CountEdit1.requestFocus(); } }); 

当用户在外地的EditText窃听出现软键盘。 固定。



Answer 2:

对我的作品:

InputMethodManager mgr = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
editField.requestFocus();
mgr.showSoftInput(editField, InputMethodManager.SHOW_IMPLICIT);


Answer 3:

userInput.post(new Runnable() {
            public void run() {
                userIdInput.requestFocus();

            }
        });

在此一展身手,并告诉您的问题仍然没有解决。



Answer 4:

在片段或活动创建视图后,应要求重点:

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    CountEdit1.requestFocus();
}


Answer 5:

试试这个:

public void onAdLoaded() 
    {  
  final Handler handler = new Handler();
             handler.postDelayed(new Runnable() {
                 @Override
                 public void run() {
                     CountEdit1.requestFocus();
                     InputMethodManager mgr = (InputMethodManager) base.getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                     mgr.showSoftInput(CountEdit1, InputMethodManager.SHOW_IMPLICIT);
                     CountEdit1.setSelection(CountEdit1.getText().length());
                 }
             },0);
}


文章来源: requestFocus doesn't work properly for EditText