我有编辑屏幕底部的文字。但我想,当我开始用键盘输入一些值时它应该在屏幕的顶部

时间:2017-03-03 11:44:43

标签: android

我的EditText屏幕底部。但我想,当我开始用键盘输入一些值时它应该在屏幕的顶部。

enter image description here

根据图片,电子邮件ID,密码是屏幕的底部。我希望它上升到屏幕顶部(这意味着Facebook登录和谷歌登录将会消失),就像第二张图片一样。

enter image description here

我在manifest.xml

下的此活动中使用了以下代码
  android:windowSoftInputMode="adjustPan"
    android:isScrollContainer="true"

但无法按照第二张图像获得所需的屏幕请告诉我该怎么做才能实现这一目标?

3 个答案:

答案 0 :(得分:1)

再向windowSoftInputMode添加一个值,如下所示,

android:windowSoftInputMode="adjustPan|adjustResize"

答案 1 :(得分:0)

使用这些(android:windowSoftInputMode =“adjustPan”)标志无法完成。 将建议一个工作来实现所需。 首先在一个布局(Ex LinearLayout或RelativeLayout)中具有上部布局(FB和Gmail登录),以便您可以显示/隐藏此布局。

现在在电子邮件ID和密码上设置焦点更改侦听器,并检查其中任何一个是否将焦点隐藏在布局上方(Facebook和谷歌登录),并且每当edittext失去焦点时再次显示布局。

editTextEmail.setOnFocusChangeListener(new OnFocusChangeListener() {          
    public void onFocusChange(View v, boolean hasFocus) {
     if(!hasFocus){
       //check if password has focus as we need to consider both the edittext. If both don't have the focus then show the FB & Gmail login.
     }
   }
});

希望这有帮助!

答案 2 :(得分:0)

您可以将您的观看次数放在ScrollView内,当焦点改变时,您可以上下滚动

private View.OnFocusChangeListener focusListener = new View.OnFocusChangeListener() {
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                if (v.getId() == _passwordText.getId()) {
                    scrollView.post(new Runnable() {
                                        @Override
                                        public void run() {
                                            scrollView.smoothScrollTo(0, scrollView.getBottom());
                                        }
                                    }
                    );
                } else {
                    scrollView.post(new Runnable() {
                                        @Override
                                        public void run() {
                                            scrollView.smoothScrollTo(0, scrollView.getTop());
                                        }
                                    }
                    );
                }
            }
        }
    };