2014-02-11 113 views
4

我有一個簡單的佈局,它在xml裏面有一個嵌套元素ScrollView,它基本上是一個獲取多個EditText和其他對象的用戶輸入的表單。 我EditText一個有屬性滾動視圖自動滾動輸入軟鍵盤的輸入鍵

android:lines="2" 

用戶地址欄,它必須有2行。所以當用戶輸入到EditText時,在軟輸入鍵盤上顯示回車鍵,並重覆按此回車鍵主Scrollview自動滾動到底部,每次點擊輸入和EditText失去其焦點和佈局自動滾動到底部它。如何阻止這種情況發生。

<ScrollView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/rel_main_footer" 
    android:layout_below="@+id/enquiry_header" > 

    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:id="@+id/tv_wit_header" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:text="@string/wit_head" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:textColor="#7f0100" /> 
     <!-- Owner Details --> 

     <LinearLayout 
      android:id="@+id/li1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/tv_wit_header" 
      android:orientation="horizontal" 
      android:padding="8dp" > 

      <TextView 
       android:id="@+id/tv_wit_owner" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:layout_weight="1.0" 
       android:text="@string/wit_name" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <EditText 
       android:id="@+id/et_wit_owner" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:layout_weight="1.0" 
       android:background="#00000000" 
       android:hint="@string/hint_set_owner" 
       android:inputType="text" 
       android:singleLine="true" 
       android:textColor="#7f0000" 
       android:textColorHint="#a65b5a" /> 
     </LinearLayout> 

     <View 
      android:id="@+id/v1" 
      android:layout_width="fill_parent" 
      android:layout_height="1dip" 
      android:layout_below="@+id/li1" 
      android:background="#A4A4A4" /> 

     <LinearLayout 
      android:id="@+id/li2" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/v1" 
      android:orientation="horizontal" 
      android:padding="8dp" > 

      <TextView 
       android:id="@+id/tv_wit_address" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:layout_weight="1.0" 
       android:text="@string/ud_address" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <EditText 
       android:id="@+id/et_wit_address" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:layout_weight="1.0" 
       android:background="#00000000" 
       android:gravity="top|left" 
       android:hint="@string/hint_set_address" 
       android:lines="2" 
       android:singleLine="true" 
       android:scrollbars="vertical" 
       android:textColor="#7f0000" 
       android:textColorHint="#a65b5a" /> 
     </LinearLayout> 

     <View 
      android:id="@+id/v2" 
      android:layout_width="fill_parent" 
      android:layout_height="1dip" 
      android:layout_below="@+id/li2" 
      android:background="#A4A4A4" /> 

     <LinearLayout 
      android:id="@+id/li3" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/v2" 
      android:orientation="horizontal" 
      android:padding="8dp" > 

      <TextView 
       android:id="@+id/tv_wit_number" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:layout_weight="1.0" 
       android:text="@string/wit_number" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <EditText 
       android:id="@+id/et_wit_number" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:layout_weight="1.0" 
       android:background="#00000000" 
       android:hint="@string/hint_wit_number" 
       android:inputType="phone" 
       android:singleLine="true" 
       android:textColor="#7f0000" 
       android:textColorHint="#a65b5a" /> 
     </LinearLayout> 

     <View 
      android:id="@+id/v3" 
      android:layout_width="fill_parent" 
      android:layout_height="1dip" 
      android:layout_below="@+id/li3" 
      android:background="#A4A4A4" /> 

     <LinearLayout 
      android:id="@+id/li4" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/v3" 
      android:orientation="vertical" 
      android:padding="8dp" > 

      <TextView 
       android:id="@+id/tv_wit_notes" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/wit_notes" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <EditText 
       android:id="@+id/et_wit_notes" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:background="#00000000" 
       android:gravity="top|left" 
       android:hint="@string/hint_wit_notes" 
       android:inputType="textMultiLine" 
       android:lines="5" 
       android:maxLines="5" 
       android:textColor="#7f0000" 
       android:textColorHint="#a65b5a" /> 
     </LinearLayout> 
    </RelativeLayout> 
</ScrollView> 
+0

嘗試在你的活動聲明中加入這一行的AndroidManifest.xml - 機器人:windowSoftInputMode =「stateHidden | adjustResize」 –

+0

讓我用這個 –

+0

不,這是行不通的 –

回答

1

它不是你的問題,100%正確的解決方案,但它可能是解決這個問題

et_wit_address.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void onTextChanged(CharSequence s, int start, 
       int before, int count) { 
      scrollview.scrollTo(0, et_wit_number.getTop()); 
         } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, 
       int count, int after) { 
      scrollview.scrollTo(0, et_wit_number.getTop()); 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      scrollview.scrollTo(0, et_wit_number.getTop()); 
     } 
    }); 
0

可以使用android:imeOptions處理鍵盤上額外的按鈕。

ActionNext:

操作鍵進行「下一步」操作,從而將用戶的下一個字段將接受的文本。

ActionDone

操作鍵執行「完成」的操作,通常意味着有什麼更多的輸入和輸入法將被關閉。

例子:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="32dp" 
     android:layout_marginTop="16dp" 
     android:imeOptions="actionNext" 
     android:singleLine="true" 
     android:ems="10" > 

     <requestFocus /> 
    </EditText> 

    <EditText 
     android:id="@+id/editText2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/editText1" 
     android:layout_below="@+id/editText1" 
     android:layout_marginTop="24dp" 
     android:imeOptions="actionDone" 
     android:singleLine="true" 
     android:ems="10" /> 

</RelativeLayout>