我需要做一个非常简单的事情 - 找出是否显示了软件键盘.这在Android中可行吗?
我有几个输入字段的活动.当活动开始时,显示软键盘.当按下后退按钮软键盘关闭并关闭活动时,我需要再次按下后退按钮.
所以问题是:是否有可能拦截后退按钮关闭软键盘并在一次按下后退按钮完成活动而不创建自定义InputMethodService?
PS我知道如何在其他情况下拦截后退按钮:onKeyDown()或者onBackPressed()在这种情况下它不起作用:只有第二次按下后退按钮被拦截.
我有一个活动,在屏幕上显示一些EditTexts用于用户输入.为了确保软键盘显示时我没有覆盖我的字段我已经设置了属性
android:windowSoftInputMode="adjustPan"
Run Code Online (Sandbox Code Playgroud)
我在清单中的活动.我在1时验证EditText的内容.视图失去焦点2.当用户执行'Enter'操作时.验证后,如果该值无效,我正在打电话
setError(CharSequence error)
Run Code Online (Sandbox Code Playgroud)
在EditText上,这会导致弹出窗口显示包含我传入的错误.问题是如果在软键盘显示时向上移动EditText,并且此时显示弹出窗口(验证失败),弹出窗口没有当键盘离开时,请按下EditText,它将保持在首次显示的位置.
有想法该怎么解决这个吗?这是Android中的错误吗?
我通过扩展为我的应用创建了一个自定义视图RelativeLayout.dialog通过拖动来打开它ImageView.它有EditTexts和Buttons.onKeyDown 因为我需要从这个视图中截取后退按钮,所以我在我的视图中重写.如果自定义视图可见,则edittext未获得焦点,如果按下后退按钮,则视图将被取消,这是所需的.
出现问题,当edittext获得焦点,键盘可见时,按下后退按钮,软键盘被解除,但如果我再次按下后退按钮,然后super.onKeyDown()调用而不是解除自定义视图,我退出我的应用程序,其中所需功能是在解除软键盘后关闭视图.我究竟做错了什么?
以下是我的自定义视图代码:
public class AddTransactionView extends RelativeLayout implements View.OnClickListener {
private final String TAG = "AddTransactionView";
private Context context;
private ViewGroup parentView;
private FriendsDAO mFriendsDAO;
private AppPreference mAppPreference;
private ImageLoader imageLoader;
private DisplayImageOptions options;
private CircularImageView friendsImage;
private Button btnIOwe, btnTheyOwe;
private EditText edtTransactionDesc, edtTransactionAmt;
private RelativeLayout relAddTransaction;
private int status;
public AddTransactionView(Context context, View anchorView, int marginTop,
ViewGroup parentView, FriendsDAO mFriendsDAO) {
super(context);
Log.e(TAG, …Run Code Online (Sandbox Code Playgroud)