2013-10-24 107 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); 
       } 
      });