2012-04-18 133 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>