代码之家  ›  专栏  ›  技术社区  ›  Jeremy Logan

Android屏幕键盘自动弹出

  •  131
  • Jeremy Logan  · 技术社区  · 16 年前

    我的一个应用程序有一个“打开屏幕”(基本上是一个菜单),它有一个 EditText 接下来是几个 Button 问题是,我的一些用户报告说,当他们打开应用程序时,它会自动弹出屏幕键盘,而不需要他们触摸 编辑文本 .据我所知,所有这些用户都在使用 HTC Hero .

    这是1.5中的错误吗?我能做些什么吗?

    10 回复  |  直到 7 年前
        1
  •  265
  •   Danny Armstrong    15 年前

    您可以在活动的onCreate方法中使用以下代码行,以确保只有当用户单击EditText时,键盘才会弹出。

    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
    
        2
  •  83
  •   mourngrym1969    14 年前
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Main"
                  android:label="@string/app_name"
                  android:windowSoftInputMode="stateHidden"
                  >
    

    这适用于Android 3.0、3.1、3.2、4.0-用于编译的编辑器(Eclipse 3.7)

    将“windowsoftinputmode=”statehidden“放在应用程序的清单XML文件中,用于希望软件键盘保持隐藏状态的每个活动。这意味着键盘不会自动弹出,用户必须单击文本字段才能弹出。我找了将近一个小时找一些有用的东西,所以我想我可以分享。

        3
  •  5
  •   Arun    9 年前

    将此添加到您的 androidmanifest.xml文件 :

    android:windowSoftInputMode="stateHidden|adjustResize"
    

    它工作得很好。:)

        4
  •  5
  •   TechBee    8 年前

    此代码适用于所有Android版本:

    @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_login);
    
     //Automatic popping up keyboard on start Activity
    
         getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
    
     or
    
     //avoid automatically appear android keyboard when activity start
         getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
     }
    
        5
  •  3
  •   sommer    9 年前

    您可以在活动的onCreate()方法中使用它

    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
    

    或者将此代码粘贴到androidmanifest.xml中的活动标记中

    android:windowSoftInputMode="stateVisible"
    
        6
  •  2
  •   Mohanraj S K    11 年前

    您可以在 android mainefest.xml版本 活动标签下

     <activity
            android:name="com.sams.MainActivity"
            android:windowSoftInputMode="stateVisible" >
     </activity>
    

    这可能对你有帮助。

        7
  •  1
  •   dmazzoni    16 年前

    在该版本的Android中,当视图膨胀时,默认情况下焦点将设置为第一个可聚焦控件-如果没有物理键盘,屏幕键盘将弹出。

    要解决此问题,请在其他地方显式设置焦点。如果焦点设置为除edittext以外的任何内容,屏幕键盘将不会出现。

    你试过在模拟器中运行android 1.5来测试它吗?

        8
  •  1
  •   Xar-e-ahmer Khan    10 年前

    你可以像编程一样

    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);
    

    或设置 android:windowSoftInputMode="stateHidden" 在里面 <activity tag 里面 AndroidManifest.xml

        9
  •  0
  •   Ruchira    9 年前
    InputMethodManager imm = (InputMethodManager)GetSystemService(Context.InputMethodService);
            imm.ShowSoftInput(_enterPin.FindFocus(), 0);
    

    *这是针对android.xamarin和findfocus()-它在层次结构中搜索当前具有焦点的视图,就像我在上面的代码之前有_enterpin.requestfocus(),因此它显示_enterpin edittext的键盘*

        10
  •  0
  •   Mike Zriel    7 年前

    在进口位于顶部的位置包括:

    import android.view.WindowManager;
    

    在创建部件上添加此代码:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ....
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
    }
    
    推荐文章