我在Android中有一个Activity
,其中包含两个元素:
EditText
ListView
当我的Activity
启动时,EditText
立即具有输入焦点(闪烁光标)。我不希望任何控件在启动时具有输入焦点。我尝试过:
EditText.setSelected(false);
EditText.setFocusable(false);
没有成功。我该如何说服EditText
在Activity
启动时不选择自己?
我在Android中有一个Activity
,其中包含两个元素:
EditText
ListView
当我的Activity
启动时,EditText
立即具有输入焦点(闪烁光标)。我不希望任何控件在启动时具有输入焦点。我尝试过:
EditText.setSelected(false);
EditText.setFocusable(false);
没有成功。我该如何说服EditText
在Activity
启动时不选择自己?
<EditText
android:layout_width="match_parent"
android:layout_height="100dp"
android:id="@+id/etComments"
android:hint="Comments.."
android:textSize="14dp"
android:focusable="false"
android:textStyle="italic"/>
ListView
中的 EditText
不起作用。使用自动生成行的 TableLayout
与 EditText
更为适合。
您可以使用请求焦点并使用键盘隐藏代码来指定其他小部件的焦点。
在xml
文件中,从你的EditText
中移除<requestFocus />
标签。
<EditText
android:id="@+id/emailField"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress">
//`<requestFocus />` /* <-- remove this tags */
</EditText>
final KeyListener edtTxtMessageKeyListener = edtTxtMessage.getKeyListener();
edtTxtMessage.setCursorVisible(false);
edtTxtMessage.setKeyListener(null);
edtTxtMessage.setCursorVisible(true);
edtTxtMessage.setKeyListener(edtTxtMessageKeyListener);
但问题是当我们第一次点击时,需要点击两次才能打开屏幕键盘。
@解决方法
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);
我曾经遇到过这样的问题,是由于我的选择器引起的。第一个状态是焦点状态,即使我的视图被禁用了,它仍然采用了焦点状态,因为它是第一个匹配并使用的状态。你可以像这样将第一个状态设置为禁用状态:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/text_field_disabled" android:state_enabled="false"/>
<item android:drawable="@drawable/text_field_focused" android:state_focused="true"/>
<item android:drawable="@drawable/text_field_normal"/>
android:windowSoftInputMode="stateAlwaysHidden"
。跟着这些步骤完成工作!
android:focusable="true"
android:focusableInTouchMode="true"
您可以将可聚焦性作为一般属性禁用
或者您可以将FocusableInTouchMode作为一个特定于触摸模式(触摸屏)的视图属性禁用
如果该Editext位于该活动的视图堆栈顶部,例如标题,那么焦点属性默认为true,即在启动活动时具有焦点。
要禁用可聚焦性,您只需将其布尔值设置为false即可。
因此,代码如下:
android:focusable="false"
android:focusable="false"
android:windowSoftInputMode="stateHidden"
将该活动添加到清单文件中,问题得以解决。
干杯。