2013-10-24 77 views
12

我有一个中间有editText的活动。当我点击editText时,键盘出现,屏幕移动,editText就在键盘上方,覆盖下面的其他东西。键盘出现时向上滚动屏幕

我不想调整大小或添加填充到布局。我只需要屏幕滚动到顶部需要查看下面其他内容的空间量。换句话说,我想在键盘出现时选择editText的位置。如果屏幕完全滚动,向我展示布局的底部也是足够的。

我试图把一个滚动视图添加此代码布局上EDITTEXT

editText.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      //make the view scroll down to the bottom 
      scrollView.scrollTo(0, scrollView.getBottom()); 

     } 
    }); 

,但它不工作。有人有想法吗?先谢谢你!

回答

11

我有一个类似的问题一次,我决定用:

android:windowSoftInputMode="adjustResize" 
在AndroidManifest.xml

如果您使用RelativeLayout开始的底部元素必须挂钩到父级底部,然后挂钩上一个元素的其他元素。

如果您使用LinearLayout将其包装在RelativeLayout中,并将LinearLayout挂接到parentBottom。

以这种方式弹出键盘时,您会看到布局的底部。

希望这会有所帮助。

+5

什么是“如果你使用的RelativeLayout开始与那一定是挂钩于母公司的底部和钩以上的其他元素底部元素以前。”意思?我没有说明你的意思,你能解释一下吗? – Josh

+0

如果当键盘可见时我想显示的屏幕部分不能挂在父级底部但是居中在页面中? –

+0

不能在我的“片段”中使用getActivity()。getWindow()。setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); – delive

3

这对我的作品

android:windowSoftInputMode="stateVisible|adjustResize" 

在androidmanifest为活动

+0

他不想调整大小。 – Sid

16

使用机器人:windowSoftInputMode = “adjustPan”

“adjustResize”

活动的主要窗口总是调整大小以为软键腾出空间屏幕上的董事会。不调整

“adjustPan”

活动的主窗口,以腾出空间给软键盘。相反,窗口的内容会自动平移,以便当前焦点永远不会被键盘遮挡,用户始终可以看到他们正在键入的内容。这通常不如调整大小,因为用户可能需要关闭软键盘才能与窗口的遮蔽部分进行交互。

例如Inn的manifest文件: -

 <activity 
    android:windowSoftInputMode="adjustPan" 
    android:name=".MainActivity"></activity> 

晚answer.But肯定它帮助任何人。

2

我有这个问题,我这个代码解析:

myEdittext.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        myscrollview.postDelayed(new Runnable() { 
         @Override 
         public void run() { 
          View lastChild = myscrollview.getChildAt(myscrollview.getChildCount() - 1); 
          int bottom = lastChild.getBottom() + myscrollview.getPaddingBottom(); 
          int sy = myscrollview.getScrollY(); 
          int sh = myscrollview.getHeight(); 
          int delta = bottom - (sy + sh); 
          myscrollview.smoothScrollBy(0, delta); 
         } 
        }, 200); 
       } 
      });