我在Android中有一个活动,包含两个元素:
编辑文本列表视图
当“活动”启动时,EditText立即具有输入焦点(闪烁光标)。我不希望任何控件在启动时具有输入焦点。我尝试了:
EditText.setSelected(false);
EditText.setFocusable(false);
没有运气。如何说服EditText在“活动”启动时不选择自己?
我在Android中有一个活动,包含两个元素:
编辑文本列表视图
当“活动”启动时,EditText立即具有输入焦点(闪烁光标)。我不希望任何控件在启动时具有输入焦点。我尝试了:
EditText.setSelected(false);
EditText.setFocusable(false);
没有运气。如何说服EditText在“活动”启动时不选择自己?
当前回答
请尝试clearFocus()而不是setSelected(false)。Android中的每个视图都具有可聚焦性和可选择性,我认为您只需要清除焦点。
其他回答
我做的最简单的事情是在onCreate中设置另一个视图的焦点:
myView.setFocusableInTouchMode(true);
myView.requestFocus();
这阻止了软键盘的出现,并且EditText中没有光标闪烁。
对我来说,在所有设备上工作的是:
<!-- fake first focusable view, to allow stealing the focus to itself when clearing the focus from others -->
<View
android:layout_width="0px"
android:layout_height="0px"
android:focusable="true"
android:focusableInTouchMode="true" />
只需将此作为一个视图放在有问题的聚焦视图之前,就可以了。
我尝试了几个单独的答案,但重点仍然是EditText。我只通过以下两种解决方案一起解决了这个问题。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true" >
(参考Silverhttps://stackoverflow.com/a/8639921/15695 )
并删除
<requestFocus />
在EditText
(来自吸毒者的参考资料https://stackoverflow.com/a/9681809 )
在不想打开键盘的“活动”中的Manifest文件中编写此代码。
android:windowSoftInputMode="stateHidden"
清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.project"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="24" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".Splash"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Login"
**android:windowSoftInputMode="stateHidden"**
android:label="@string/app_name" >
</activity>
</application>
</manifest>
如果您有另一个活动视图(如ListView),也可以执行以下操作:
ListView.requestFocus();
在onResume()中,从editText中获取焦点。
我知道这个问题已经得到了回答,但只是提供了一个对我有效的替代解决方案:)