我想知道是否有办法处理用户Enter在键入时按下EditText
,例如onSubmit HTML事件.
还想知道是否有一种方法可以操作虚拟键盘,使"完成"按钮被标记为其他东西(例如"Go")并在单击时执行某个操作(再次,如onSubmit).
我正在EditText
设置以下属性,以便在用户单击EditText时可以在键盘上显示完成按钮.
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
Run Code Online (Sandbox Code Playgroud)
当用户点击屏幕键盘上的完成按钮(完成输入)时,我想更改RadioButton
状态.
如何从屏幕键盘上点击完成按钮?
我android:windowSoftInputMode="stateVisible"
在Manifest中有一个Edittext .现在,当我开始活动时,将显示键盘.如何隐藏它?我无法使用,android:windowSoftInputMode="stateHidden
因为当键盘可见时,最小化应用程序并恢复它键盘应该是可见的.我试过了
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
但它不起作用.
在我的应用程序中确定我有一个字段供用户输入数字.我将字段设置为仅接受数字.当用户点击该字段时,它会调出键盘.在键盘上(在ICS上)有一个完成按钮.我想让键盘上的完成按钮触发我在我的应用程序中的提交按钮.我的代码如下.
package com.michaelpeerman.probability;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.Random;
public class ProbabilityActivity extends Activity implements OnClickListener {
private Button submit;
ProgressDialog dialog;
int increment;
Thread background;
int heads = 0;
int tails = 0;
public void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
setContentView(R.layout.main);
submit = ((Button) findViewById(R.id.submit));
submit.setOnClickListener(this);
}
public void onClick(View view) {
increment = 1;
dialog = new ProgressDialog(this);
dialog.setCancelable(true); …
Run Code Online (Sandbox Code Playgroud) 当用户点击时EditView
,Android会打开键盘,以便用户可以写入EditView
.
问题是,当用户完成写入时,无法隐藏键盘.用户必须按后退按钮才能隐藏键盘.
有没有办法Done
在键盘上显示隐藏键盘的按钮?
有没有办法让Multi-Line EditText
出现并在Android 2.3上使用IME Action Label"Done"?
在Android 2.2中,这不是问题,输入按钮显示IME操作标签"完成"(android:imeActionLabel="actionDone"
),并在单击时取消软输入.
配置EditText
多线时,Android 2.3无法显示软输入键盘的"完成"操作.
我已经设法通过使用a来改变Soft Input输入按钮的行为KeyListener
,但是enter按钮仍然看起来像一个回车键.
这是宣言 EditText
<EditText
android:id="@+id/Comment"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="0dp"
android:lines="3"
android:maxLines="3"
android:minLines="3"
android:maxLength="60"
android:scrollHorizontally="false"
android:hint="hint"
android:gravity="top|left"
android:textColor="#888"
android:textSize="14dp"
/>
<!-- android:inputType="text" will kill the multiline on 2.3! -->
<!-- android:imeOptions="actionDone" switches to a "t9" like soft input -->
Run Code Online (Sandbox Code Playgroud)
inputType
在加载后在活动中设置内容视图时检查值,它显示为:
inputType = 0x20001
Run Code Online (Sandbox Code Playgroud)
这是:
TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_NORMAL
InputType.TYPE_TEXT_FLAG_MULTI_LINE
我的布局有4个EditText视图和一个提交Button视图.我需要为前3个EditText设置"Next"按钮,为第4个EditText字段设置"Done"按钮,而不是软键盘的"New Line"键.
如何才能做到这一点?
我有EditText,用于在消息(电子邮件,短信)上输入内容.我希望消息能够立即发布在ActionDone按钮上.我使用以下代码:
message.setOnEditorActionListener((textView, i, keyEvent) -> {
switch (i) {
case EditorInfo.IME_ACTION_DONE:
if (messageCanBePosted()) {
SoftKeyboard.hide(message);
postMessage();
return true;
} else {
return false;
}
default:
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
但我也希望这个消息字段是多行的,就像在任何其他信使应用程序中一样.我可以用这条线来实现它:
android:inputType="textMultiLine"
Run Code Online (Sandbox Code Playgroud)
问题是在添加此行后,ActionDone按钮开始像Enter按钮一样.所以我EditorInfo.IME_ACTION_DONE
从来没有调用过捕获的回调.因此,每次用户按下该按钮光标移动到新行而不是发布消息.
如何保持EditText的多行行为(在多行显示文本的能力)和ActionDone按钮?
假设您有多个EditText实例.
您希望能够使用键盘的下一个按钮(用作ENTER键的替换)在它们之间切换.
每个EditText可能都有一个可以多行显示的长内容(假设我希望将其限制为3行,如果文本仍然太长,请使用ellipsize).
正如我所注意到的,TextView和EditText都有非常奇怪的行为,缺乏一些基本功能.其中之一是,如果您希望转到下一个视图,则需要为每个EditText实例设置singleLine ="true".
我已经尝试了下一个xml布局(和其他试验),但它不起作用:
<LinearLayout 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" android:orientation="vertical"
android:gravity="center" tools:context=".MainActivity">
<EditText android:id="@+id/editText1" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:nextFocusDown="@+id/editText2"
android:singleLine="false" android:imeOptions="actionNext"
android:maxLines="3" android:ellipsize="end"
android:text="@string/very_long_text" />
<EditText android:id="@+id/editText2" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:nextFocusDown="@+id/editText3"
android:singleLine="false" android:imeOptions="actionNext"
android:maxLines="3" android:ellipsize="end"
android:text="@string/very_long_text" />
<EditText android:id="@+id/editText3" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:singleLine="false"
android:maxLines="3" android:ellipsize="end"
android:text="@string/very_long_text"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我也尝试了下一个代码,但它确实是一个愚蠢的解决方案:
...
final EditText editText=(EditText)findViewById(R.id.editText1);
editText.setOnEditorActionListener(new OnEditorActionListener()
{
@Override
public boolean onEditorAction(final TextView v,final int actionId,final KeyEvent event)
{
if(actionId==EditorInfo.IME_NULL)
{
final View view=findViewById(editText.getNextFocusDownId());
if(view!=null)
{
view.requestFocus();
return true;
}
}
return …
Run Code Online (Sandbox Code Playgroud) android focus multiline android-softkeyboard android-edittext
如何同时设置这些选项:
android:minLines="3"
android:inputType="textMultiLine"
android:imeOptions="actionDone"
好像我一输入android:inputType="textMultiLine"
,键盘就自动将OK键替换为Enter键。有谁知道是否可以同时拥有两把钥匙?
注意:这个答案不是我想要的。我想要两把钥匙。
我试图使用软键盘的完成按钮通过数据绑定激活方法.就像onClick一样.有没有办法做到这一点?
例:
<EditText
android:id="@+id/preSignUpPg2EnterPhone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
onOkInSoftKeyboard="@{(v) -> viewModel.someMethod()}"
/>
Run Code Online (Sandbox Code Playgroud)
onOkInSoftKeyboard不存在...有什么东西可以创建这种行为吗?
谢谢!
EditText
目标是将多行与“下一个视图按钮”一起使用android:inputType="textMultiLine"
,例如android:inputType="text"
(见图 2)。
<EditText
android:id="@+id/addAffirmationContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:maxLength="255"
android:imeOptions="flagNoExtractUi" />
Run Code Online (Sandbox Code Playgroud)
我尝试了许多与: 的组合
android:inputType, singleLine, nextFocusDown, nextFocusUp, nextFocusLeft, nextFocusRight, nextFocusForward, imeOptions, lines
,但android:inputType="textMultiLine"
总是强制换行按钮。
在 Nexus 5 Android 7 上测试。
android ×13
ime ×2
multiline ×2
android-view ×1
focus ×1
imeoptions ×1
java ×1
keyboard ×1
textview ×1