and*_*mer 193 android android-edittext
当我按下"下一步"时,必须将用户EditText上的焦点移至密码.然后,从密码,它必须向右移动,依此类推.你能帮我解释一下如何编码吗?
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="User Name*" />
<EditText
android:id="@+id/txt_User"
android:layout_width="290dp"
android:layout_height="33dp"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Password*" />
<EditText
android:id="@+id/txt_Password"
android:layout_width="290dp"
android:layout_height="33dp"
android:singleLine="true"
android:password="true" />
<TextView
android:id="@+id/confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Password*" />
<EditText
android:id="@+id/txt_Confirm"
android:layout_width="290dp"
android:layout_height="33dp"
android:singleLine="true"
android:password="true" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
Tob*_*run 439
焦点移动基于在给定方向上找到最近邻居的算法.在极少数情况下,默认算法可能与开发人员的预期行为不匹配.
使用以下XML属性更改方向导航的默认行为:
android:nextFocusDown="@+id/.."
android:nextFocusLeft="@+id/.."
android:nextFocusRight="@+id/.."
android:nextFocusUp="@+id/.."
Run Code Online (Sandbox Code Playgroud)
除了方向导航,您还可以使用标签导航.为此您需要使用
android:nextFocusForward="@+id/.."
Run Code Online (Sandbox Code Playgroud)
要获得关注的特定视图,请致电
view.requestFocus()
Run Code Online (Sandbox Code Playgroud)
要收听某些不断变化的焦点事件,请使用a View.OnFocusChangeListener
您可以android:imeOptions
用来处理键盘上的额外按钮.
您可以在与编辑器关联的IME中启用的其他功能,以改善与应用程序的集成.这里的常量对应于imeOptions定义的常量.
imeOptions的常量包括各种动作和标志,请参阅上面的链接了解它们的值.
价值榜样
操作键执行"下一步"操作,将用户带到将接受文本的下一个字段.
动作键执行"完成"操作,通常意味着无需输入任何内容,IME将被关闭.
代码示例:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="32dp"
android:layout_marginTop="16dp"
android:imeOptions="actionNext"
android:maxLines="1"
android:ems="10" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1"
android:layout_below="@+id/editText1"
android:layout_marginTop="24dp"
android:imeOptions="actionDone"
android:maxLines="1"
android:ems="10" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
如果你想听imeoptions事件使用a TextView.OnEditorActionListener
.
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
performSearch();
return true;
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
Mat*_*s H 63
android:inputType="text"
Run Code Online (Sandbox Code Playgroud)
应该带来同样的效果.在紧接着之后将焦点带到下一个元素.
android:nextFocusDown="@+id/.."
Run Code Online (Sandbox Code Playgroud)
如果您不希望下一个视图获得焦点,请另外使用此功能
Abr*_*yev 28
添加您的editText
android:imeOptions="actionNext"
android:singleLine="true"
Run Code Online (Sandbox Code Playgroud)
将属性添加到清单中的活动
android:windowSoftInputMode="adjustResize|stateHidden"
Run Code Online (Sandbox Code Playgroud)
在布局文件中ScrollView设置为root或parent layout all ui
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
tools:context="com.ukuya.marketplace.activity.SignInActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!--your items-->
</ScrollView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
如果你不想每次都添加,请创建样式:在values/style.xml中添加样式
默认/风格:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="editTextStyle">@style/AppTheme.CustomEditText</item>
</style>
<style name="AppTheme.CustomEditText" parent="android:style/Widget.EditText">
//...
<item name="android:imeOptions">actionNext</item>
<item name="android:singleLine">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)
Spr*_*ker 18
使用以下行
android:nextFocusDown="@+id/parentedit"
Run Code Online (Sandbox Code Playgroud)
parentedit
是下一个EditText
要关注的ID .
以上行还需要以下行.
android:inputType="text"
Run Code Online (Sandbox Code Playgroud)
要么
android:inputType="number"
Run Code Online (Sandbox Code Playgroud)
感谢@Alexei Khlebnikov的建议.
小智 12
android:inputType="textNoSuggestions"
android:imeOptions="actionNext"
android:singleLine="true"
android:nextFocusForward="@+id/.."
Run Code Online (Sandbox Code Playgroud)
添加额外字段
安卓的inputType = "textNoSuggestions"
在我的情况下工作!
<AutoCompleteTextView
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/user"
android:hint="@string/username"
android:inputType="text"
android:maxLines="1"
android:imeOptions="actionNext"
android:singleLine="true" />
Run Code Online (Sandbox Code Playgroud)
这三条线做得很神奇
android:maxLines="1"
android:imeOptions="actionNext"
android:singleLine="true"
Run Code Online (Sandbox Code Playgroud)
在 Kotlin 中,我使用了 Bellow 之类的..
xml:
<EditText
android:id="@+id/et_amount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionNext"
android:inputType="number"
android:singleLine="true" />
Run Code Online (Sandbox Code Playgroud)在科特林中:
et_amount.setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_NEXT) {
// do some code
true
} else {
false
}
}
Run Code Online (Sandbox Code Playgroud)小智 6
在onEditorAction处理程序中,请记住必须返回一个布尔值,指示您是否正在处理该操作(true),或者是否应用了某些逻辑并希望正常行为(false),如下例所示:
EditText te = ...
te.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event){
if (actionId == EditorInfo.IME_ACTION_NEXT) {
// Some logic here.
return true; // Focus will do whatever you put in the logic.
}
return false; // Focus will change according to the actionId
}
});
Run Code Online (Sandbox Code Playgroud)
我在执行逻辑后返回true时发现了这一点,因为焦点没有移动.
小智 5
只需使用以下代码即可正常工作,并为每个编辑文本使用 inputType ,并且下一个按钮将出现在键盘中。
android:inputType="text" or android:inputType="number" etc
Run Code Online (Sandbox Code Playgroud)
小智 5
简单的方法,当您只有几个字段时:
需要设置
android:maxLines="1"
android:imeOptions="actionNext"
android:inputType=""
<-设置您的文本类型,在其他情况下它将是多行并阻止下一步
样本:
<EditText android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/text_large"
android:maxLines="1"
android:inputType="textEmailAddress"
android:imeOptions="actionNext"
android:layout_marginLeft="@dimen/element_margin_large"
android:layout_marginRight="@dimen/element_margin_large"
android:layout_marginTop="0dp"/>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
195320 次 |
最近记录: |