最近有个项目是没有触摸的,外接的16键硬件键盘,但EditText在获取焦点时还是会弹出输入法。不想对每个EditText都设置监听处理。有没有更优雅的方法能让程序在运行期间都不会弹出输入法?最好是只要配置一下AndroidManifest.xml或者在Application里面运行一段代码。
学习是最好的投资!
你的AndroidManifest.xml中使用的全局主题样式应该是这样的:AndroidManifest.xml中使用的全局主题样式应该是这样的:
AndroidManifest.xml
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme">//使用的是AppTheme主题样式
那么你需要做的是,在 AppTheme中设置 EditText样式,完整的styles.xml如下:
AppTheme
EditText
<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="editTextStyle">@style/NoFocusableEditText</item> </style> <style name="NoFocusableEditText" parent="Widget.AppCompat.EditText"> <item name="android:focusable">false</item>//没有焦点就不会弹出了 </style>
这样整个 App的EditText都设置好了.
/-----------------------由于题主补充了根据题的描述,我更新了如下答案------------------------/在你的Activity的onCreate
onCreate
getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
public abstract class BaseNoIMActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); onCreateStarted(savedInstanceState); } protected abstract void onCreateStarted(@Nullable Bundle savedInstanceState); }
public class TestActivity extends BaseNoIMActivity {//继承基类 @Override protected void onCreateStarted(@Nullable Bundle savedInstanceState) { setContentView(R.layout.activity_test); Log.e("test","TestActivity is started"); } }
你的
AndroidManifest.xml
中使用的全局主题样式应该是这样的:AndroidManifest.xml
中使用的全局主题样式应该是这样的:那么你需要做的是,在
AppTheme
中设置EditText
样式,完整的styles.xml如下:这样整个 App的EditText都设置好了.
/-----------------------由于题主补充了根据题的描述,我更新了如下答案------------------------/
那么你需要做的是,在在你的Activity的
onCreate
AppTheme
中设置EditText
样式,完整的styles.xml如下:在你的Activity的
onCreate
函数中添加如下代码即可完全禁用软键盘:🎜 🎜所以,你想全局生效的话,可以写一个基类,例如:🎜 rrreee 🎜然后任意个Activity都继承它,如果你的项目已经有基类,那么把上面的代码插入到基类中即可,demo示例:🎜 rrreee