【问题标题】:Android - Dialog fragment: always hide virtual keyboardAndroid - 对话框片段:总是隐藏虚拟键盘
【发布时间】:2015-09-10 04:15:57
【问题描述】:

我有一个自定义对话框,它是一个 DialogFragment。这个对话框有一个 EditText 和我自己的键盘视图,所以我不想使用默认的虚拟键盘。 每次用户触摸 EditText 时,我都会隐藏虚拟键盘:

edtAmount.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        v.onTouchEvent(event);

        View view = this.getDialog().getCurrentFocus();
        if (view != null) {
            InputMethodManager imm = (InputMethodManager) getActivity()
                .getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(view.getWindowToken(),0);

        }
        return true;
    }
});

但是由于系统仍然调用虚拟键盘显示(之前是强制隐藏它),所以系统非常快速地上下移动我的对话框。这不好。

有人可以帮我避免像这样弹出的对话框,让它保持不动吗?

PS:我在 Manifest 中试过:

android:windowSoftInputMode="adjustNothing" 

但好像不行。

非常感谢。

编辑 我想保留光标,所以我在这个线程中找到了解决方案: https://stackoverflow.com/a/14184958/2961402

希望这对某人有所帮助。

【问题讨论】:

    标签: android android-softkeyboard android-dialogfragment


    【解决方案1】:

    这只能在您从自定义 EditText 扩展 EditText 时完成,请使用以下代码用于自定义 EditText,它永远不会打开软键盘...!

    public class DisableSoftKeyBoardEditText extends EditText {
      public DisableSoftKeyBoardEditText(Context context, AttributeSet attrs) { 
      super(context, attrs);     
      }      
      @Override      
      public boolean onCheckIsTextEditor() {   
      return false;     
      }        
      } 
    

    【讨论】:

    • 这是唯一的方法
    • 太棒了!您扩展 EditText 的想法很棒。它工作正常,但有一个问题是 EditText 也失去了光标。有什么办法可以保留那个光标?
    • 返回 false 导致隐藏光标....!使用此方法时不能启用光标
    • 我在这个答案中得到了解决方案:stackoverflow.com/a/14184958/2961402。基本上它禁用键盘并手动设置光标位置。
    【解决方案2】:

    试试这个代码。在我的应用中,它完美运行

    getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
    

    【讨论】:

    • 他说要为他的对话永久禁用软键盘...!
    • @Arsal 伊玛目。如果他将此代码放入 OnTouchListener 过程中,他的键盘将在每次单击 EditText 时隐藏
    • 是的,我仍然可以隐藏键盘,但是在隐藏键盘之前,系统仍然会弹出我的对话框并快速出现故障。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多