我想知道是否有办法处理用户Enter在键入时按下EditText,例如onSubmit HTML事件.
还想知道是否有一种方法可以操作虚拟键盘,使"完成"按钮被标记为其他东西(例如"Go")并在单击时执行某个操作(再次,如onSubmit).
是否有可能同时拥有一个EditText具有android:inputType="textMultiLine"集合的小部件android:imeOptions="actionDone"?
我想要一个多行编辑框,键盘上的动作按钮完成,而不是回车(回车),但它似乎没有工作..
提前致谢
我正在尝试获取Android应用程序的登录屏幕,到目前为止这是我的代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical">
<EditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Username"
android:inputType="text"
android:singleLine="true"
android:imeOptions="actionNext">
<requestFocus />
</EditText>
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:inputType="textPassword"
android:singleLine="true"
android:imeOptions="actionDone" />
<Button
android:id="@+id/buttonLaunchTriage"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="@string/login" />
</LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,键盘显示正确的键,但是当我在输入密码后尝试按完后,没有任何反应.我用它来处理按钮按下:
private void setupLoginButton() {
Button launchButton = (Button) findViewById(R.id.buttonLaunchTriage);
launchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText username = (EditText) findViewById(R.id.patient_start_userName_value);
EditText password = (EditText) findViewById(R.id.patient_start_password_value);
try {
if(TriageApplicationMain.validateUser(username.getText().toString(),password.getText().toString(),getApplicationContext()))
{
Toast.makeText(StartActivity.this,
"Launching Triage Application", Toast.LENGTH_SHORT)
.show();
startActivity(new …Run Code Online (Sandbox Code Playgroud) 我有一个编辑文本,在我的应用程序中用作搜索框.在我的Nexus 7上的Jelly Bean中,当我在正在监听的文本框中输入内容并点击时,输入KeyEvent = null并将ActionId = 0传递给onEditorAction()方法.有人遇到过这种情况么?我认为这可能是一个错误.
在下面的第二个if语句中,我得到一个空指针,因为actionId = 0和KeyEvent = null;
// Search field logic.
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Log.d(TAG, "onEditorAction");
if (event != null && event.getAction() != KeyEvent.ACTION_DOWN)
return false;
if (actionId == EditorInfo.IME_ACTION_SEARCH
|| event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
.....Do some stuff();
}
}
Run Code Online (Sandbox Code Playgroud) 我有FrameLayout容器,我想动态添加EditText.我需要设置两个imeOptions:IME_ACTION_DONE和IME_FLAG_NO_EXTRACT_UI在这同一时间,但我有问题,该怎么办呢编程.我的解决方案覆盖了我imeOptions(我现在这是很好的行为:)但我尝试了一切)
我的第二个问题:如何以编程方式创建EditText后设置焦点?这种方法editText.requestFocus();对我不起作用.我想打开键盘后postCardContainer.addView(editText);
postCardContainer.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.topMargin = (int) event.getY()-50;
params.leftMargin = (int) event.getX()-50;
EditText editText = new EditText(NewPostcardActivity.this);
editText.setSingleLine();
editText.setBackgroundResource(R.color.transparent);
editText.requestFocus();
editText.setLayoutParams(params);
editText.setCursorVisible(true);
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
postCardContainer.addView(editText);
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在创建一个提供聊天功能的应用程序.屏幕上有一个EditText,我在其上设置了OnKeyListener.每当用户在键入消息后按"Enter"键时,消息就会在屏幕上显示.它工作正常.这是我的EditText:
<EditText android:id="@+id/chatMessageField"
android:layout_height="wrap_content" android:layout_width="fill_parent"
android:layout_gravity="center_horizontal|center_vertical"
android:layout_marginRight="5dip" android:layout_marginLeft="5dip"
android:maxLines="2" android:minLines="1" android:scrollbars="vertical"
android:hint="@string/chatMessageHintText" android:textColorHint="#3b64a8">
</EditText>
Run Code Online (Sandbox Code Playgroud)
问题是当用户想要在EditText包装文本并转到新行之前转到新行.现在,如果用户想要转到新行并按"Enter"键,则会发送消息.
在一些聊天消息中,我已经看到按下"Shift + Enter"(或任何其他键组合)同时将用户带到新行.我们如何检测Android中同时按下的"Shift + Enter"(或任何其他键组合)键?有没有办法在Android中实现此功能?
我试图使用软键盘的完成按钮通过数据绑定激活方法.就像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不存在...有什么东西可以创建这种行为吗?
谢谢!
我正在寻找可以从软键盘上按下"完成"按钮的代码.按下完成按钮后,我需要将按钮状态更改为启用,然后用户可以继续执行下一个活动.
我在stackoverflow上找到了这段代码,但我没有错误地实现它.你能帮我吗?
editText = (EditText) findViewById(R.id.edit_text);
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
// do your stuff here
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
这是整个.java文件
package com.example.start201;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class FirstActivity extends Activity {
private EditText editText;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); …Run Code Online (Sandbox Code Playgroud)