2015-11-03 42 views
1

我有一個活動,基本上是一個長形式的輸入字段。 在每一行上,我想顯示一個TextView作爲每個EditText下面的提示文本,並且我希望TextView在用戶輸入數據時始終保持可見狀態。不幸的是,軟鍵盤會隱藏提示文本,並且始終將其自身置於EditText下方。是否有任何技術可以讓EditText下面的TextView在軟鍵盤出現並且內容調整(通過windowSoftInputMode = adjustResize | adjustPan)時也可見,而無需用戶滾動?鍵盤放置掩蓋下面的視圖EditText想保持可見

回答

1

編輯: 通過更深入地理解問題,我認爲你應該在用戶點擊編輯文本時以編程方式添加滾動。這裏是要做到這一點的代碼:

private final void focusOnView() 
{ 
new Handler().post(new Runnable() 
{ 
@Override 
public void run() 
{ 
your_scrollview.scrollTo(0, your_EditBox.getBottom()); 
}}); 
} 

從我個人的經驗,我認爲沒有這樣的方式來做到這一點。你可以做的是將提示textview放在editext的右側。或是通過EDITTEXT一個提示佔位符用現代的方法:

在XML中,它只是android:hint="someText"

編程方式,你可以在上述方法中使用edittext.setHint(int);

通R.string.somestring。

+0

謝謝,我知道替代方案。我正在尋找我的特定設計的解決方案。 – AlanKley

+0

如果文件夾包含在滾動視圖中,則可以以編程方式滾動視圖。您可以撥打的onClick()的EditText '私人最終無效focusOnView(){ 新的處理程序()的方法,這個功能。職位(新的Runnable(){@Override 公共 無效的run(){ your_scrollview.scrollTo(0 ,your_EditBox.getBottom()); } }); }' –

+0

現在可以工作!我會試一試。我可能想要在onFocusChange偵聽器中滾動。 – AlanKley

1

Vishavjeet讓我在正確的軌道上建議我scrolldown揭示可能被鍵盤重疊的視圖。下面是一個類似於我用來解決問題的功能。當TextView上方的EditText獲得焦點時,可以調用它:

//  View targetView; // View that may be hidden by keyboard 
    //  ScrollView scrollContainerView; // Scrollview containing hiddenView 
    // 
    void assureViewVisible (View targetView, ScrollView, scrollContainerView) {   
     Window rootWindow = activity.getWindow(); 
     Rect rMyView = new Rect(); 
     View rootview = rootWindow.getDecorView(); 
     rootview.getWindowVisibleDisplayFrame(rMyView); // Area not taken up by keyboard 

     int subTextPos[] = new int[2]; 
     targetView.getLocationInWindow(subTextPos); // Get position of targetView 
     int subTextHt = targetView.getHeight();  // Get bottom of target view 

     if ((subTextPos[1]+subTextHt) > rMyView.bottom) { // Is targetView at all obscured? 
      int scrollBy = (subTextPos[1]+subTextHt) - rMyView.bottom + 10; // add a small bottom margin 
      mMeasurementViewScrollView.smoothScrollBy(0, scrollBy); // Scroll to subtext 
     } 
    }