2016-09-09 56 views
1

我有兩個EditText Listview中的每一行。行可能有n個數字。我想在第一行的第一個EditText中輸入數值,然後在軟鍵盤上按next。重點應放在第一行的第二個EditText。比在第二個EditText中輸入數值之後,在軟鍵盤上按next鍵,焦點應該進入第二排第一個EditText。在此我附上了我的xml和適配器代碼。如何將焦點集中在列表視圖中的下一個編輯文本

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <LinearLayout 
     android:paddingLeft="10dp" 
     android:paddingRight="10dp" 
     android:paddingTop="5dp" 
     android:layout_weight="10" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 
     <com.vijay.textview.AutofitTextView 
      android:layout_gravity="center_vertical" 
      android:id="@+id/txt_component" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="6" 
      android:fontFamily="sans-serif" 
      android:text="@string/empty_string" 
      android:textColor="@color/planned_schedule_list_item_color" 
      android:textSize="@dimen/bol_listview_font_size"/> 

     <com.vijay.edittext.AutoFitEditText 
      android:id="@+id/edt_ready_to_go" 
      android:paddingBottom="3dp" 
      android:layout_marginTop="-15dp" 
      style="@style/scan_text_fields_white_bg" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="4" 
      android:fontFamily="sans-serif" 
      android:inputType="number" 
      android:textColor="@color/planned_schedule_list_item_color" 
      android:textSize="@dimen/bol_listview_header_font_size" 
      android:imeOptions="flagNoExtractUi" 
      android:maxLength="5" 
      android:nextFocusRight="@id/edt_damaged"/> 

     <com.vijay.edittext.AutoFitEditText 
      android:id="@+id/edt_damaged" 
      android:paddingBottom="3dp" 
      android:layout_marginTop="-15dp" 
      style="@style/scan_text_fields_white_bg" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="4" 
      android:fontFamily="sans-serif" 
      android:inputType="number" 
      android:textColor="@color/planned_schedule_list_item_color" 
      android:textSize="@dimen/bol_listview_header_font_size" 
      android:imeOptions="flagNoExtractUi" 
      android:maxLength="5"/> 
    </LinearLayout> 
</LinearLayout> 

我的適配器代碼:

holder.edtReadyToGo.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if (actionId == EditorInfo.IME_ACTION_NEXT) { 
       if (position + 1 != mData.size()) { 
       mListView.smoothScrollToPosition(position+1); 
       mListView.postDelayed(new Runnable() { 
        public void run() { 
         AutoFitEditText nextField = (AutoFitEditText) holder.edtDamaged.focusSearch(View.FOCUS_RIGHT); 
         if (nextField != null) { 
          nextField.requestFocus(); 
         } 
        } 
       }, 200); 
       return true; 
       } 

      }else if (actionId == EditorInfo.IME_ACTION_DONE) { 
       holder.edtReadyToGo.setCursorVisible(false); 
      } 
      return false; 
     } 
    }); 

    holder.edtDamaged.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if (actionId == EditorInfo.IME_ACTION_NEXT) { 
       if (position + 1 != mData.size()) { 
        mListView.smoothScrollToPosition(position+1); 
        mListView.postDelayed(new Runnable() { 
         public void run() { 
          AutoFitEditText nextField = (AutoFitEditText) holder.edtReadyToGo.focusSearch(View.FOCUS_DOWN); 
          if (nextField != null) { 
           nextField.requestFocus(); 
          } 
         } 
        }, 200); 
        return true; 
       } 

      } else if (actionId == EditorInfo.IME_ACTION_DONE) { 
       holder.edtDamaged.setCursorVisible(false); 
      } 
      return false; 
     } 
    }); 

這裏我的第二個EditText上(edt_damaged)工作的罰款。當我點擊下一個時,它會自動聚焦到下一個字段。但第一個EditText(edt_ready_to_go)不起作用。請幫我解決我的問題。

回答

0

您可以通過

  • 列表視圖設置到Android嘗試:descendantFocusability = 「afterDescendants」
  • 列表視圖來setItemsCanFocus(真);
  • 設置你的活動
    機器人:windowSoftInputMode = 「adjustResize」
+0

我會盡量讓你知道.. !! – Vijay

+0

它工作正常。但是,當它顯示在最後一行時,它顯示在第一個編輯文本中完成。所以我們不能移動到最後一行的第二個編輯文本。任何想法。?? – Vijay

+0

將android:windowSoftInputMode =「adjustResize」更改爲「adjustPan」 – Krutik

相關問題