[英]How do I hide Android keypad after a button is pressed until user taps an EditText box?
在应用程序启动时显示软键盘很容易。 但是,当单击显示Button
( btnShow
)时,我想隐藏键盘,直到用户点击EditText
框。 这是因为键盘隐藏了大部分输出。 尽管要求用户隐藏键盘不是很多,但我希望它是自动发生的。
但是我无法做到这一点。 如图所示,在12个“组合”中只有3个可见。
这是我的主要Activity
Java代码的相关部分。
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
public class MyActivity extends Activity {
@Override protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
// The next line shows the keypad on app creation:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
final Button bs = (Button)findViewById(R.id.btnShow);
bs.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// The next hides the keypad, but something else makes it re-appear immediately:
// *************** EDIT ******************
if(comb.size() > 0) {
b.setText(ss);
b.requestFocus();
}
// *************** END OF EDIT ***********
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
});
}
}
*编辑*添加上面的3行之后,我已经取得了一些进步,但是可以看到Alpha键盘并且对话框滚动到屏幕之外:
我隐藏了数字键盘; 如何摆脱Alpha键盘以防止滚动?
这是黄色输出的xml:
<TextView android:id="@+id/txvCombos"
android:text="@string/default_combo"
android:editable="true"
android:enabled="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:selectAllOnFocus="true"
android:inputType="textMultiLine"
android:windowSoftInputMode="stateHidden"
android:layout_width="100dp"
android:layout_height="300dp"
android:layout_row="5"
android:layout_column="1"
android:layout_gravity="left|top"
android:gravity="center_horizontal|top"
android:textColor="#fffbff32"
android:textSize="20dp"
android:lines="13"
android:layout_columnSpan="3"/>
(原始问题:点击“显示”按钮时如何隐藏键盘,但允许在用户单击EditText框之前查看“组合”输出?)
单击按钮时可以使用此代码
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);
初始化OnClickListener
下的view变量
public View view;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.