2012-04-18 106 views
4

在滚动视图内有一个edittext。 (并且editview上方的scrollview中还有其他视图。)
当用户按下edittext时,键盘变得可见,并且scrollview的可见区域变得很小。因为edittext没有显示在屏幕上。 (它不滚动滚动视图,以便显示编辑文本。)
用户按下键盘上的任何键后,滚动视图会滚动,以便edittext再次变为可见。

我该如何强制scrollview滚动,以便在用户按下键盘之前可见edittext?edittext inside scrollview,如何在获取焦点时滚动到edittext

<ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="0dip" 
    android:layout_weight="1" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:orientation="vertical" 
     android:paddingBottom="0dip" 
     android:paddingLeft="0dip" 
     android:paddingRight="0dip" 
     android:paddingTop="0dip" > 


     <include 
      layout="@layout/trade_row_item_3cell" /> 

     <include 
      android:id="@+id/rowQuantity" 
      layout="@layout/trade_quantity_selection_row_layout" /> 

     <include 
      layout="@layout/trade_row_item_3cell" /> 

     <include 
      layout="@layout/trade_price_selection_et_row_layout" /> 

     <include 
      layout="@layout/trade_row_item_3cell" /> 

     <include 
      layout="@layout/trade_row_item_3cell" /> 

     <Button 
      style="@style/CustomButtonText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:layout_weight="0" /> 
    </LinearLayout> 
</ScrollView> 

<include 
    layout="@layout/trade_bottom_view" /> 

下面是其中包含的EditText

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="50dip" 
android:layout_gravity="left" 
android:background="@android:drawable/list_selector_background"> 
<TextView 
    android:id="@+id/tvLeft" 
    android:layout_width="0dip" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:singleLine="true" 
    android:textColor="#000000" 
    android:paddingLeft="10dip" 
    android:gravity="center_vertical" 
    android:layout_gravity="center_vertical"/> 
<EditText 
    android:id="@+id/etRight" 
    android:paddingLeft="10dip" 
    android:background="@null" 
    android:layout_width="0dip" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:inputType="number" 
    android:gravity="center_vertical" 
    android:layout_gravity="center_vertical"/> 
<ImageView 
    android:id="@+id/ivRight" 
    android:src="@drawable/proceed" 
    android:paddingRight="10dip" 
    android:layout_weight="0" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical"/>  

trade_row_item_3cell布局包含的LinearLayout与edittexts布局(trade_quantity_selection_row_layout)。

+1

你能证明你的代码 – 2012-04-18 12:51:00

回答

1

Java代码

EditText dwEdit = (EditText) findViewById(R.id.DwEdit);  
dwEdit.setOnTouchListener(new OnTouchListener() { 
     public boolean onTouch(View view, MotionEvent event) { 
      // TODO Auto-generated method stub 
      if (view.getId() ==R.id.DwEdit) { 
       view.getParent().requestDisallowInterceptTouchEvent(true); 
       switch (event.getAction()&MotionEvent.ACTION_MASK){ 
       case MotionEvent.ACTION_UP: 
        view.getParent().requestDisallowInterceptTouchEvent(false); 
        break; 
       } 
      } 
      return false; 
     } 
    }); 

XML代码

<EditText 
android:id="@+id/DwEdit" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:minLines="10" 
android:scrollbarStyle="insideInset" 
android:scrollbars="vertical" 
android:overScrollMode="always" 
android:inputType="textCapSentences"> 
</EditText>