【问题标题】:Doesn't show Keyboard when requesting EditText after Dialog对话框后请求 EditText 时不显示键盘
【发布时间】:2015-10-09 10:51:29
【问题描述】:

我有问题。

我定制了Dialog(加载微调器)。 我触摸了Button。然后用表格打开RelativeLayout 并编辑文本,就像搜索一样。

我的问题是,当我在按钮触摸和打开布局之间显示加载器时,它专注于EditText,但不显示键盘。当我不使用我的对话框时,它工作正常。我在前台和线程中尝试过 - 结果相同。

XML

        <ProgressBar
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:indeterminateOnly="false"
            android:id="@+id/loader_spiner"

            android:background = "@xml/progress"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true" />

    </RelativeLayout>

代码

 public void prepareLoader(){
        loader = new Dialog(context);
        loader.setContentView(R.layout.ag_loader);
        loader.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
        spinerLoader = (ProgressBar) loader.findViewById(R.id.loader_spiner);
    }

    public void showLoader(){

        spinerLoader.startAnimation(AnimationUtils.loadAnimation(this, R.xml.splash_spinner));
        loader.show();
    }

    public static void hideLoader(){

        loader.hide();

    }

非常感谢。

【问题讨论】:

标签: java android dialog android-edittext focus


【解决方案1】:

在 'loader.show()' 中你可以试试这个代码来显示键盘:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

或:

loader.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

或:

loader.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

如果不行再试试:

Handler delayedRun = new Handler();
delayedRun.post(new Runnable() {
  @Override
  public void run() {
    youreditText.requestFocus();
    InputMethodManager mgr = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
    mgr.showSoftInput(youreditText, InputMethodManager.SHOW_IMPLICIT);
  }
});

【讨论】:

    【解决方案2】:

    我找到了一个让键盘出现一些时间的解决方案。

    new android.os.Handler().postDelayed(
        new Runnable() {
            public void run() {
                if (thisSearchable) {
                    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.showSoftInput(searchInput, InputMethodManager.SHOW_IMPLICIT);
                }
            }
        }, 300);
    

    【讨论】:

      猜你喜欢
      • 2019-11-16
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      • 2017-02-14
      • 2013-04-26
      • 2013-04-20
      • 1970-01-01
      • 2013-08-23
      相关资源
      最近更新 更多