我有一个编辑文字:
<LinearLayout android:id="@+id/linearLayout7" android:layout_width="match_parent" android:layout_height="wrap_content">
<EditText android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_weight="1" android:id="@+id/editText1" android:text="3">
<requestFocus></requestFocus>
</EditText>
<Button android:text="Button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/button2"></Button>
</LinearLayout>
然后在
下面的其他一些东西我遇到的问题是,当应用程序启动时焦点在输入上,我不希望在应用程序启动时焦点在输入上。
我尝试删除
<requestFocus></requestFocus>
事情并没有做任何事情。
答案 0 :(得分:121)
在android:focusable="true"
的父布局中添加android:focusableInTouchMode="true"
和EditText元素,如下所示;
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout7" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true" android:focusableInTouchMode="true">
我认为,它可以帮到你。
答案 1 :(得分:6)
没有更多工作......只需添加android:windowSoftInputMode =“stateAlwaysHidden” 到Manifest.xml文件的活动标记。
答案 2 :(得分:4)
如果要清除编辑文本的默认焦点,请使用以下2个属性
android:focusable="false"
android:focusableInTouchMode="true"
在父线性布局中。
例如:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="true"
android:orientation="vertical">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="email id"
android:inputType="textEmailAddress"
android:maxLines="1"
/>
</LinearLayout>
如果要在活动创建时隐藏键盘,请在清单文件活动标记内使用这些属性 例如:
<activity
android:configChanges="screenSize|orientation|keyboardHidden"
android:screenOrientation="portrait"
android:name=".activities.LoginActivity"
android:windowSoftInputMode="stateHidden|adjustResize"/>
如果要在按钮上单击隐藏键盘或在某些事件发生时使用以下代码
public void onClick(View v) {
try {
//InputMethodManager is used to hide the virtual keyboard from the user after finishing the user input
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isAcceptingText()) {
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
} catch (NullPointerException e) {
Log.e("Exception", e.getMessage() + ">>");
}
}
} catch (NullPointerException e) {
Log.e("Exception", e.getMessage() + ">>");
}
如果您想在离开活动后从编辑文本字段中取消焦点
@Override
protected void onResume() {
super.onResume();
mEmail.clearFocus();
mPassword.clearFocus();
}
最后如果要在提交表单时清除编辑文本字段中的数据,请使用
@Override
protected void onResume() {
super.onResume();
mEmail.getText().clear();
mPassword.getText().clear();
}
答案 3 :(得分:3)
<LinearLayout
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="0px"
android:layout_height="0px" />
<EditText android:text=""
android:id="@+id/EditText01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/hint">
</EditText>
无需其他编码,这是一个简单明了的解决方案。
答案 4 :(得分:2)
您可以使用隐藏键盘隐藏的窗口软输入模式android:focusable="false"
和android:focusableInTouchMode="true"
<activity
android:name=".MainActivity"
android:windowSoftInputMode="stateHidden"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 5 :(得分:1)
<EditText
android:id="@+id/input"
android:layout_width="0dp"
android:layout_height="48dp"
android:focusable="false"
android:focusableInTouchMode="false" />
detailInputView = (EditText) debugToolsView.findViewById(R.id.input);
detailInputView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
detailInputView.setFocusable(true);
detailInputView.setFocusableInTouchMode(true);
return false;
}
});
答案 6 :(得分:0)
只需将以下内容添加到主布局视图xml标记中:
android:focusableInTouchMode="true"
答案 7 :(得分:0)
Hei Lee,
有几种方法可以做到这一点,Mudassir为您提供了一种方法。
如果这个想法不起作用,那就做简单的事 -
在AndroidManifest>Activity
添加以下简单代码:
android:windowSoftInputMode="stateHidden"
在XML中的EditText中没有什么需要做的,一切都会起作用,不会出现焦点。
查看现实生活中的示例代码:
<activity
android:name=".MainActivity"
android:windowSoftInputMode="stateHidden"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 8 :(得分:0)
在LinearLayout中尝试此代码
<LinearLayout
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:hint="Search..."
android:drawableRight="@drawable/ic_search"
android:id="@+id/search_tab_hotbird_F"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recyHotbird_F"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="4dp">
</android.support.v7.widget.RecyclerView>
</LinearLayout>
答案 9 :(得分:0)
它为我工作,希望也能为您提供帮助。
任一:
android:windowSoftInputMode="stateAlwaysHidden"
将此属性添加到要禁用自动聚焦的特定活动下的Manifest.xml文件中。 缺点: :它只会隐藏您的软键盘,而光标仍会在那里。
其他:
android:focusableInTouchMode="true"
将此属性添加到您的UI xml文件中(在父级布局下),以便同时隐藏焦点和键盘。
答案 10 :(得分:0)
对于清晰的默认请求,请按如下所示设置视图的父级focusable =“ true”
<android.support.constraint.ConstraintLayout
android:id="@+id/coordinatorChild"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true">
答案 11 :(得分:0)
在使父视图可见之前,我先执行了此操作(并且工作正常),即使我触摸它,编辑文本也不会自动聚焦。 (parentView包含编辑文本)
...
parentView.setFocusable(true);
parentView.setFocusableInTouchMode(true);
objProperties.setVisibility(VISIBLE);
...