在您投票并标记为重复之前,请阅读我的问题。
我已经阅读了讨论此问题的其他问题,所有这些问题都适用于我的布局,除了之外的第一个问题。
目前,这是我的onCreate
方法的顶部:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
^这样做至少在启动时不会弹出键盘,但EditText
仍然关注。
这是XML
的{{1}}:
EditText
这是我开展活动时的样子:
问题是,对于某些手机,当<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/changePass"
android:layout_centerHorizontal="true"
android:layout_marginTop="167dp"
android:ems="10"
android:imeOptions="flagNoExtractUi"
android:inputType="textPassword"
android:maxLength="30" >
</EditText>
像这样关注时,他们无法写入。我想要不专注。
我所做的工作适用于下一个布局,EditText
没有关注,看起来更像是这样:
请注意,它的布局相同。这是用户返回此屏幕后的屏幕,这表示EditTexts
没有任何问题,因为这是XML
相同,但问题是XML
是仅关注创建活动的时间。
我已经完成了研究,所有其他问题对我没有帮助(但他们确实帮助键盘不显示,谢天谢地)。我怎样才能使它在启动时EditText
看起来像第二个截图,而不是第一个?
答案 0 :(得分:285)
您可以设置布局的属性,如android:descendantFocusability="beforeDescendants"
和android:focusableInTouchMode="true"
示例:强>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true" >
<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/changePass"
android:layout_centerHorizontal="true"
android:layout_marginTop="167dp"
android:ems="10"
android:imeOptions="flagNoExtractUi"
android:inputType="textPassword"
android:maxLength="30" >
</EditText>
</RelativeLayout>
愿这个有用;)
答案 1 :(得分:16)
XML代码:
<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/changePass"
android:layout_centerHorizontal="true"
android:layout_marginTop="167dp"
android:ems="10"
android:focusable="false"
android:imeOptions="flagNoExtractUi"
android:inputType="textPassword"
android:maxLength="30" >
</EditText>
Java代码:
EditText edPwd = (EditText)findViewById(R.id.password);
edtPwd.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
v.setFocusable(true);
v.setFocusableInTouchMode(true);
return false;
}
});
在xml中设置focusable false并通过代码
将其设置为true
答案 2 :(得分:12)
在你的main_layout中 添加这2行:
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
示例:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"> *YOUR LAYOUT CODE* </RelativeLayout>
答案 3 :(得分:2)
在onCreate()
中添加/* Revoke setuid/setgid on chown */
if (!S_ISDIR(inode->i_mode) &&
((iap->ia_valid & ATTR_UID) || (iap->ia_valid & ATTR_GID))) {
iap->ia_valid |= ATTR_KILL_PRIV;
if (iap->ia_valid & ATTR_MODE) {
/* we're setting mode too, just clear the s*id bits */
iap->ia_mode &= ~S_ISUID;
if (iap->ia_mode & S_IXGRP)
iap->ia_mode &= ~S_ISGID;
} else {
/* set ATTR_KILL_* bits and let VFS handle it */
iap->ia_valid |= (ATTR_KILL_SUID | ATTR_KILL_SGID);
}
}
或onCreateView()
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
答案 4 :(得分:1)
XML代码
<EditText
android:imeOptions="flagNoExtractUi"
android:focusable="false"
/>
onClickListerner中的Java代码
mEdtEnterPhoneNumber.setFocusable(true);
mEdtEnterPhoneNumber.setFocusableInTouchMode(true);
答案 5 :(得分:1)
最好的解决方案是: https://stackoverflow.com/a/45139132/3172843
正确和简单解决方案是setFocusable为false, setFocusableInTouchMode为true 。因此,只有当用户触摸EditText 时,EditText才会获得焦点import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 0, 0])
y_scores = np.array([1, 0, 0, 0])
roc_auc_score(y_true, y_scores)
答案 6 :(得分:0)
可以使用android:focusable="false"
来禁用它,但如果由于某种原因无效,那么您只需添加LinearLayout
即可获得焦点而不会中断您的布局。
注意:Eclipse会给您一个错误,指出您的LinearLayout
没用,因为它没有内容。你应该能够毫无问题地忽视它。
例如:
<LinearLayout
android:focusable="true"
android:focusableInTouchMode="false"
android:layout_width="0dp"
android:layout_height="0dp"
/>
<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/changePass"
android:layout_centerHorizontal="true"
android:layout_marginTop="167dp"
android:ems="10"
android:imeOptions="flagNoExtractUi"
android:inputType="textPassword"
android:maxLength="30" >
</EditText>
</LinearLayout>
答案 7 :(得分:0)
您可以通过编程方式执行此操作。在您的editText.setEnabled(false)
活动方法中使用onStart()
(而不是在onCreate()中 - 因为这是初始化GUI组件的一些方法)
答案 8 :(得分:0)
<activity
android:name=".MainActivity"
android:windowSoftInputMode="stateAlwaysHidden" />
机器人:windowSoftInputMode = “stateAlwaysHidden”
在Manifest.xml文件的activity标记中添加此行。当您单击TextEdit时,键盘将成为焦点。
答案 9 :(得分:0)
最简单的方法是添加
android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
在Manifest.xml文件的activity标记中
答案 10 :(得分:0)
1)最简单的方法是,打开清单并将以下代码放在活动标记之间:
android:windowSoftInputMode="stateHidden"
2)将此属性放在父级布局中
android:focusable="true"
android:focusableInTouchMode="true"
答案 11 :(得分:0)
在清单中,复制并粘贴下面的代码。
<activity
android:name=".LoginActivity"
android:windowSoftInputMode="stateAlwaysHidden"/>
答案 12 :(得分:-7)
使用android:focusable="false"
进行对焦禁用
<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/changePass"
android:layout_centerHorizontal="true"
android:layout_marginTop="167dp"
android:ems="10"
android:imeOptions="flagNoExtractUi"
android:inputType="textPassword"
android:maxLength="30"
android:focusable="false" >
</EditText>